我有一个jsp页面,根据框中的选择更新列出的内容。
<form:select path="Value" id="select" onchange="update()" items="${Values}" />
在另一个文件中,根据您选择的内容和项目填充相应的更新功能。这适用于一个盒子,但我需要有多个盒子,但是将代码复制到for循环会生成多个盒子,但更新函数只指向对象“select”的id。我想创建一种方法来选择变量,以便它生成具有不同值的多个对象,这样它们就不会指向同一个东西。
我的想法只是创建一个var然后让它计数,这样在id =“select”可以强制它创建不同的对象...但是更新函数从jsp中读取
var Val = $('#select option:selected').val();
为了使它们匹配,我需要将参数传递给update()函数,但是当我用参数填充update方法时,JSP就不能再调用它了。我试过Update(var n){// code here} 和更新(int n){//代码在这里}
但是当JSP语句运行update(// ValueIwant)时,它总是抛出找不到方法的错误。
所以我的问题是,如何动态地将参数从jsp页面传递给javascript函数,而无需对所有值进行硬编码。
我想到了。这很简单。只需从JSP调用函数(Parameters),但在javascript中,该方法只是使用没有类型的参数声明。
Function Myfunction (N)
{
//code
}
在这种特定情况下,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>