我有以下代码:
<html><body>
<script type="text/javascript"> function date1(){
????
alert(<%=d%>);}</script>
<input type="button" value="date" onclick="date1()"/>
</body></html>
而不是????,每当我按下按钮时,会显示当前日期?
<%String d = (new Date()).toString())%>
<%String d = "new Date()"%>
<%= Date d = new Date() %>;
答案 0 :(得分:3)
由于这是作业,我会在没有明确说明哪个选项正确的情况下给你一个解释:
请记住,任何服务器端Java代码仅在请求/提供JSP时运行,主要产生将输出到浏览器的文本。带警报的行中的代码:
alert(<%=d%>);
将在d
语句的括号之间输出服务器端(Java)alert
变量的内容。因此,正确的答案是每次单击按钮时都会获得新的JavaScript日期,因此您需要确定哪一个会导致此输出到浏览器:
alert(new Date());
只有一个答案就是这样。
注意:如果您无法弄明白,请尝试使用每个答案实际运行代码并查看哪些有效。我想你会发现其中一个答案产生无效的JavaScript,一个产生服务器端编译错误,另一个产生。
答案 1 :(得分:1)
这是你在找什么? 您不需要JSP来执行此类操作。
1.第一个选项会产生编译错误,因为Date无法解析为某个类型(需要在jsp上使用import语句),应该删除1个右括号。如果您修复此选项将生成静态代码,如下所示
alert(Thu Feb 09 22:20:08 CET 2012);
因为JavaScript需要“标记字符串,这将在参数列表之后产生”缺失“并且不起作用。
2.第二个选项是正确的(就像nnnnnn所说的那样),因为静态代码看起来像
alert(new Date());
由于Date也是JavaScript函数,因此此代码将显示带日期的警报窗口。
3.第三个选项完全搞砸了,因为&lt;%=表示“print”所以“Date d =”是语法错误。