簡體   English   中英

將值從 JSP 頁面傳遞到 JavaScript 函數

[英]Passing Values from a JSP page to a javascript function

我有一個 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}
and Update(int n) {//代碼在這里}

但是JSP語句運行update(//ValueIwant)時,總是拋出找不到方法的錯誤。

所以我的問題是,如何在不對所有值進行硬編碼的情況下動態地將參數從 jsp 頁面傳遞給 javascript 函數。

我想到了。 這很簡單。 只需從 JSP 調用函數(參數),但在 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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM