在没有任何事件的情况下调用Javascript函数
Calling a Javascript function without any event
这是用.jsp:编写的代码
<script type="text/javascript" >
function chk(d,e)
{
var x = d.split('/')
var y = e.split('/')
var a = new Date(x[2],x[0],x[1])
var b = new Date(y[2],y[0],y[1])
var c = ( b - a )
var p= c / (1000 * 60 * 60 * 24);
}
</script>
<% String b="2013/07/12";
String c="2013/07/14";%>
<script>
var myVar=chk('$b','$c');
</script>
<body>
<% String st="<script>document.writeln(myVar)</script>";
out.println("value="+st); %>
</body>
我想得到这两个日期(即"b"answers"c")之间的天数(即"p")作为输出。但我得到的输出是"value=NaN"。这个代码出了什么问题?请帮忙。
这个问题很难回答。首先,看起来您想要使用EL将scriptlet中声明的变量传递给JavaScript
- 将scriptlet中的变量设置为pageContext属性或request属性,如下所述:如何评估EL中的scriptlet变量
- 使用JSTL
<c:out>
将变量从EL发送到JavaScript函数 - 按照GauravSharma的回答建议,在JavaScript函数的末尾添加一个
return p;
您的代码应该是这样的(至少对我使用Tomcat7和在导航器中打印2有效):
<script type="text/javascript">
function chk(d, e) {
var x = d.split('/');
var y = e.split('/');
var a = new Date(x[0], x[1] - 1, x[2]);
var b = new Date(y[0], y[1] - 1, y[2]);
var c = (b - a);
var p = c / (1000 * 60 * 60 * 24);
return p;
}
</script>
<%
String b = "2013/07/12";
String c = "2013/07/14";
pageContext.setAttribute("b", b);
pageContext.setAttribute("c", c);
%>
<script>
var myVar = chk('<c:out value="${b}" />', '<c:out value="${c}" />');
</script>
<body>
<%
String st = "<script>document.writeln(myVar)</script>";
out.println("value=" + st);
%>
</body>
正如我在对您的问题的评论中所说,这看起来像是一个练习scriptlets、EL、JSTL和JavaScript集成的练习此类代码不适用于实时生产系统NEVER。长期以来,不鼓励使用Scriptlet。请参阅:如何避免JSP文件中的Java代码?。同时,将此展示给您的老师、教授或教您Java web开发的任何人。
在函数末尾添加return p;
您的函数没有返回任何内容,这就是为什么undefined
被写在屏幕上的原因。
function chk(d,e)
{
var x = d.split('/')
var y = e.split('/')
var a = new Date(x[2],x[0],x[1])
var b = new Date(y[2],y[0],y[1])
var c = ( b - a )
var p= c / (1000 * 60 * 60 * 24);
return p;
}
只需调用write this
var myVar=chk('$b','$c');
已准备好文档。
因为JSP
刚刚写入了script
到document
。还没有执行。
相关文章:
- 是否可以在不更改上下文的情况下调用函数.apply
- Ajax:只在元素存在的情况下调用Ajax
- 可以“;超级“;可以在子类的方法内部使用,在不直接引用的情况下调用相应的超类方法
- typeaheadjs:如何在不使用缓存数据的情况下调用服务器
- 如何在没有 AJAX 的情况下调用上一页
- 是否可以在不加对象名称前缀的情况下调用对象的函数
- 谷歌应用程序脚本:如何在没有用户交互的情况下调用绑定到处理程序的函数
- Knockout:可以在没有参数的情况下调用可观察的扩展器
- Kinetic.js / Javascript:在不使用 eval() 的情况下调用变量作为属性
- 函数不't在添加括号的情况下调用它时运行(即使它不需要参数)
- 如何在不加载调用的页面的情况下调用 URL
- .js文件在不respond_to的情况下调用
- 在从服务器端 c# 使用 AJAX 进行部分渲染的情况下调用 javascript 函数
- 我可以在不使用 AJAX 的情况下调用 servlet URL 吗?
- 为什么我无法在以下情况下调用 javascript AJAX 函数
- 如何在没有 OnClick 事件的情况下调用 JavaScript 方法
- 在不使用.pipe()的情况下调用gulp-notify
- 如何在不加载的情况下调用函数
- Chrome JavaScript 开发者控制台:是否可以在没有换行符的情况下调用 console.log()
- 在打开 jQuery 的情况下调用多个函数.(“咔嚓”)