-1

ボックス内の選択に基づいてリストされているものを更新する jsp ページがあります。

<form:select path="Value" id="select" onchange="update()" items="${Values}" />

別のファイルには、選択した内容とアイテムに基づいて入力される対応する更新関数があります。これは1つのボックスで機能しますが、複数のボックスが必要ですが、コードをforループにコピーすると複数のボックスが生成されますが、更新機能はオブジェクト「選択」のIDのみを指します. select を変数にする方法を作成して、異なる値を持つ複数のオブジェクトを生成し、それらが同じものを指さないようにしたいと考えています。

私の考えでは、単に var を作成してカウントし、id="select" で別のオブジェクトを強制的に作成できるようにすることでした...しかし、更新関数は jsp から読み取ります

var Val = $('#select option:selected').val();

それらを一致させるには、パラメーターを update() 関数に渡す必要がありますが、update メソッドにパラメーターを入力すると、JSP はそれを呼び出すことができなくなります。Update(var n) { //code here}
と Update(int n) {//Code here}を試しました

しかし、JSP ステートメントが update(//ValueIwant) を実行すると、常にメソッドが見つからないというエラーがスローされます。

したがって、私の質問は、すべての値をハードコーディングせずに、jsp ページから javascript 関数にパラメータを動的に渡すにはどうすればよいかということです。

4

2 に答える 2

0

この特定の状況では、javascriptキーワードthisを使用して、要素の参照を渡すことができます。

提供されたコード(jQueryの使用を含む)を可能な限り近くに保つと、これは次のようになります。

<form:select path="Value" id="select" onchange="update(this)" items="${Values}" />
<!-- 3 more times; id should be changed and kept unique -->
<!-- ... -->
<script type="text/javascript">
  function update(srcElement) {
    var Val = $(srcElement).find('option:selected').val();
    // want to make sure it's OK so far?
    console.log(Val);
  }
</script>

さて、一般的なケースでは、他の人が述べているように、本質的には、JSPタグを使用してHTML(およびここでは埋め込みJavaScript)を生成して目的の処理を実行する方法の問題です。

私はSpringMVCを練習していません(ここで使用されているものだと思います)が、擬似コードでは、これは次のようになります。

<!-- remember? this is *pseudo-code*, 
     for I ignore the form:select capabilities,
     specifically towards runtime expressions like ${i} 
-->
<% for(int i= 0; i<4 ; i++) { %>
  <%-- maybe the following line is not 100% OK; 
       fix it according to your taglib documentation --%>
  <form:select path="Value" id="select${i}" 
               onchange="update(${i})" items="${Values}" />
<% } %>
<script type="text/javascript">
  function update(index) {
    var Val = $('#select' + index + ' option:selected').val();
    // want to make sure it's OK so far?
    console.log(Val);
  }
</script>
于 2012-11-06T15:07:37.920 に答える
0

私はそれを考え出した。とてもシンプルです。JSPから関数(パラメータ)を呼び出すだけですが、javascriptでは型を持たないパラメータでメソッドを宣言するだけです。

Function Myfunction (N)
{
//code
}
于 2012-11-06T15:02:19.560 に答える