我想使用jsp表达式标签将java String变量传递给javascript函数参数.Below是我的jsp页面。
First.jsp
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<script>
function stringGenerate(str){
var x = document.getElementsByTagName("input");
x[0].value = str;
}
function numberGenerate(num){
var x = document.getElementsByTagName("input");
x[1].value = num;
}
</script>
</head>
<body>
<%
String num ="1234567890";
String str = "abcdefghij";
%>
<input type="text" name="string" readonly="readonly"/>
<input type="text" name="number" readonly="readonly"/><br/><br/>
<input type="button" value="String Generate" onclick= "stringGenerate(<%=str %>)" />
<input type="button" value="Number Generate" onclick= "numberGenerate(<%=num %>)" />
</body>
</html>
当我点击值为&#34; Number Generate&#34;的按钮时,num变量值(1234567890)将显示在文本框上(name =&#34; number&#34;)但是当我点击在具有值&#34;字符串生成&#34;的按钮上,相应的文本框上没有显示任何内容(name =&#34; string&#34;)。这里num和str都是字符串类型可变但为什么只有num变量值显示在文本框中,为什么不显示str变量值?
答案 0 :(得分:2)
原因是当浏览器呈现页面时,它会将str和num值直接放在代码中,所以它看起来像:
<input type="button" value="String Generate" onclick="stringGenerate(abcdefghij)"/>
浏览器基本上认为您正在尝试引用名为'abcdefghij'
的Javascript变量。
您应该在字符串文本之前和之后添加'
字符,让javascript知道它应该使用该文本的值,而不是搜索具有该名称的变量。
str的声明应该如下所示:
String str = "\'abcdefghij\'";
请注意,您无法使用\"
转义,因为这会破坏您的代码。
答案 1 :(得分:1)
在HTML中使用字符串时尝试使用单引号'
:
onclick= "stringGenerate('<%=str %>')"
^ ^
完整代码:
<input type="button" value="String Generate" onclick= "stringGenerate('<%=str %>')" />