将值从JSP页面传递到javascript函数

时间:2012-11-05 21:00:30

标签: javascript jsp servlets

我有一个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函数,而无需对所有值进行硬编码。

2 个答案:

答案 0 :(得分:0)

我明白了。这很简单。只需从JSP调用函数(Parameters),但在javascript中,只使用参数没有类型声明方法。

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>