我有一个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()函数,但是当我用参数填充update方法时,JSP就不能再调用它了。我试过了
更新(var n){//代码在这里}
和
更新(int n){//此处代码}
但是当JSP语句运行update(// ValueIwant)时,它总是抛出找不到方法的错误。
所以我的问题是,如何动态地将参数从jsp页面传递给javascript函数,而无需对所有值进行硬编码。
答案 0 :(得分:0)
Function Myfunction (N)
{
//code
}
答案 1 :(得分: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>