2011-11-16 6 views
0

私はjavascript配列を持っています。それぞれをjstlで反復して、出力を表示したいとします。jqueryにjavascript配列を渡す

<script type="text/javascript"> 
    phoneFilterObject = { 
     allPhoneArray: [] 
    } 
    var specPhone = []; 
    OnUserSelect(){ 
    //loop through allPhoneArray 
    //do filtering logic and populate specPhone array 
    } 
</script> 
<body> 
    // here I want to iterate through the specPhone array and display it. also I want to populate hidden variables with values from specPhoneArray 
    // i want to do the following 
<c:if test="${!empty specPhoneArray}"> 
     <c:foreach items="${specPhoneArray}" var="phoneObj"> 
      <c:out value="${phoneObj.name}"/> 
      <input type="hidden" name="phoneID" value="<c:out value='${phoneObj.id}'/>"/> 
     </c:foreach> 
    </c:if> 
</body> 

jqueryでjavascript配列を読み取ることができません。私は以下を試しました

specPhoneArray = $(specPhoneArray); & 
specPhoneArray = ${specPhoneArray}; 
this.specPhoneArray = $(specPhoneArray); 

助けていただければ幸いです。

+0

のjQueryはJavaScriptの中に絡み合って使用することができ、それを* javascript afterallです。私はあなたが何を達成しようとしているのか分かりません。おそらくjsfiddleが順番に並んでいますか? – switz

+0

JSTLはJava変数用です。 JavaScriptとはまったく関係ありません。サーバー側の変数にアクセスできる場合は、そこで作業してください。そうしないと、jQueryでDOM要素を構築する必要があります。しかし、どのようにJavaScript配列を作成していますか? –

+0

私は電話のJSONArrayを提供するドロップレットを持っています。JSONArrayでは各機能の新しいサブセットを作成しています。私は1つの配列の電話機能をフィルタリングしているので、それを表示したい。 – cstephen

答えて

0

あなたはJSTLでそれを行うことはできませんが、JavaScriptの世界にとどまることで実現できます。まず、テンプレートを作成し、自分のページに追加:

function t(s,d) { 
    for (var p in d) { 
    s = s.replace(new RegExp('{'+p+'}','g'), d[p]); 
    } 
    return s; 
} 

、その後、あなたは(あなたがjQueryのを使用していると仮定して)行うことができます:

<script id="phone-tmpl" type="text/html"> 
    {name} 
    <input type="hidden" name="phoneID" value="{id}"/> 
</script> 

は、JavaScriptで少しテンプレートヘルパーを追加

var phoneTmpl = $('#phone-tmpl').html(), 
    html = ""; 

for (var i = 0, l = specPhone.length; i < l; i++) { 
    html += t(phoneTmpl, specPhone[i]); 
} 

// do something with html 
$('body').append(html); 

また、このデモを確認することができます:http://jsfiddle.net/d5jaY/

+0

私は個人的には文字列としてhtml要素を持ってdiv/htmlに追加するという考えが嫌いです。 – cstephen

+0

これはクライアント側からテンプレートを処理する標準的な方法になっているのであまりにも悪いです。他のすべての一般的なjsフレームワークは、同様の方法でそれを処理します。 –

+0

コードをデバッグしようとしている誰かにとっては難しいですが、なぜ私はJavaScriptの内部に文字列としてhtml要素を持つという考えが嫌いです。私の場合、html要素は、var html = " cstephen