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

问题描述 投票:0回答:2

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

javascript jsp servlets
2个回答
0
投票

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

Function Myfunction (N)
{
//code
}

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>
© www.soinside.com 2019 - 2024. All rights reserved.