在IE中用JSP动态生成Javascript
我试着做那样的事 1.在IE中用JSP动态生成Javascript,javascript,internet-explorer,jsp,Javascript,Internet Explorer,Jsp,我试着做那样的事 1. <head><% out.println("<script type=\"text/javascript\">"); out.println("function myfunction(){"); out.println("for(int i=0;i<10;i++){"); out.println("alert(message+i);"); out.println("}}"); out.println("</script>&l
<head><% out.println("<script type=\"text/javascript\">"); out.println("function myfunction(){"); out.println("for(int i=0;i<10;i++){"); out.println("alert(message+i);"); out.println("}}"); out.println("</script></head>"); %>
像那样使用它
<body><input type="button" value="abcd" onclick="myfunction();"/></body>
这就是在我的jsp页面中生成javascript。它可以很好地工作,但只在chrome中工作,在IE中不工作。然后我尝试了这个2。
<head><%StringBuffer dynamicJavaScript = new StringBuffer();dynamicJavaScript.append("\n<script type=\"text/javascript\">");dynamicJavaScript.append("\n</script>");%></head>
在标签里再这样用一次
<%=dynamicJavaScript%>
以一种奇怪的方式,只有当我将这两种解决方案都包括在内时,它才能在IE中工作。
你有什么想法吗?
多谢各位
这在两个方面在语法上是无效的:1)my
在这里是错误的。2) function
是一个保留关键字
关于动态生成Javascript代码,我强烈建议您不要使用scriptlets,而只使用taglibs/EL。您的第一行可以在以下帮助下完全替换(只需访问/WEB-INF/lib
):
…其中,${bean}
是放置在页面
、请求
、会话
或应用程序
作用域和${bean.vector}
中的bean,需要在bean
类中具有该名称的getter,如
public class Bean {
public Vector<String> getVector() {
return this.vector;
}
}
公共类Bean{
公共向量getVector(){
返回这个.vector;
}
}
要了解更多关于JSTL的信息,请咨询Sun。要了解更多关于EL的信息,请咨询
这就是说,
Vector
被认为是遗留的,您应该改用改进的,它在十多年前就已经取代了它(更多关于集合框架的信息)。在这方面,,我还建议扔掉那些超过10年的教程/书籍,去读最近的。我必须说我对EL不太在行。我想先从一个bean中获取一个向量,然后生成一个带有for循环的javascript,该循环显示向量的元素。问题是我不知道如何使用EL获取向量。比如那个Vector myVector=mybean.getMyVector();对于(inti=1;i<head>
<script type="text/javascript">
function myFunction() {
// <c:forEach begin="0" end="10" var="i">
alert(message${i});
// </c:forEach>
}
</script>
</head>
<c:forEach items="${bean.vector}" var="item">
alert('${item}');
</c:forEach>
public class Bean {
public Vector<String> getVector() {
return this.vector;
}
}