-1

我有一个 jsp 页面,它根据框中的选择更新列出的内容。

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

在另一个文件中,根据您选择的内容和项目填充相应的更新函数。这适用于一个盒子,但我需要有多个盒子,但是将代码复制到for循环中会生成多个盒子,但更新函数只指向对象“select”的id。我想创建一种让 select 成为变量的方法,以便它生成多个具有不同值的对象,这样它们就不会指向同一事物。

我的想法是只创建一个 var 然后让它计数,以便在 id="select" 可以强制它创建不同的对象......但是更新函数从 jsp 读取

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

为了使它们匹配,我需要将参数传递给 update() 函数,但是当我用参数填充更新方法时,JSP 无法再调用它。我试过 Update(var n) { //code here}
和 Update(int n) {//Code here}

但是当JSP语句运行update(//ValueIwant)时,总是抛出找不到方法的错误。

所以我的问题是,如何在不硬编码所有值的情况下将参数从 jsp 页面动态传递给 javascript 函数。

4

2 回答 2

0

我想到了。这很简单。只需从 JSP 调用函数(参数),但在 javascript 中,该方法只是用没有类型的参数声明的。

Function Myfunction (N)
{
//code
}
于 2012-11-06T15:02:19.560 回答
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)。

我没有练习过 Spring MVC(我假设这就是这里使用的),但在伪代码中,这可能看起来像:

<!-- 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 回答