Javascript中的Java Array索引:我的语法是否正确?

时间:2013-02-01 11:47:35

标签: java javascript jsp

在我的JSP中,我有一个Java数组 menuNames ,我想从该数组中分配一个值到文本区域。在下面我提到了Javascript代码,请指教我更正代码..

function setMainMenuURL(index) {

document.getElementById("SelectedURL").value=<%menuNames[index]%>;
}

4 个答案:

答案 0 :(得分:1)

使用JSP Expression -

document.getElementById("SelectedURL").value=<%=menuNames[index]%>;

JSP表达式元素包含一个脚本语言表达式,该表达式被计算,转换为String,并插入表达式出现在JSP文件中的位置。

因为表达式的值被转换为String,所以您可以在JSP文件中使用文本行中的表达式,无论它是否用HTML标记。

表达式元素可以包含根据Java语言规范有效的任何表达式,但不能使用分号来结束表达式。

答案 1 :(得分:1)

您的Java代码(在JSP中)和JavaScript代码混淆了。在将任何内容返回给浏览器之前,Java代码在服务器端运行,并且与JavaScript代码无关。在Java代码运行之后,JavaScript在客户端运行,在用户的浏览器中运行。

您正在尝试做的事情 - 这是行不通的 - 是在Java代码中使用JavaScript参数。由于Java已经执行,这完全没有意义。

最好的办法是将Java数组打印为有效的JavaScript数组(将其保存为JavaScript变量),然后在JavaScript代码中使用它。像这样:

var javascriptArrayMenuNames = <%= Java code to output JSON representation of the array %>;
function setMainMenuUrl(index) {
    document.getElementById('SelectedURL').value = javascriptArrayMenuNames[index];
}

答案 2 :(得分:1)

你不能将java数组中的值赋给javascript函数,因为在客户端调用javascript函数而在服务器端调用java。所以在服务器端用java创建javascript数组

答案 3 :(得分:0)

请把它作为对Quoi答案的评论: 这样:

document.getElementById("SelectedURL").value=<%=menuNames[index]%>;

不起作用。因为“index”变量在编译的servlet中是未定义的。