<%
String errorMessage = (String) request.getAttribute("errorMessage");
%>
<input type="hidden" Id="errorMessage" value="<%=errorMessage%>" />
function alertErrorMessage(){
var em = $("#errorMessage").val();
if(em != "null"){
alert(em);
//alert(em.length);
$("#errorMessage").val("");
}
}
重点是 if(em != "null"){这句。如果写成if(em !="")或者if(em)或者if(em != null),都不行,照样弹出null。
经过系统的思考,发现弹出的null,不是null值,而是null字符串。
如果 <input type="hidden" Id="errorMessage" value="<%=errorMessage%>" />中的java脚本
是JSTL表达式${errorMessage},就不会出现这种情况。因为java脚本中的errorMessage如果为空,则为null值。
到了js那里,获取到这个input的value的时候,就是字符串null了。
这是个在js中把字符串null当成null值得典型问题。
本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/wr41211336/archive/2009/10/21/4709626.aspx
本文讨论了一个典型的JavaScript问题:如何正确地判断隐藏输入框中的错误消息是否为空。通过使用特定的条件语句,解决了将字符串'null'误判为null值的问题,并介绍了使用JSTL表达式的替代方案。

被折叠的 条评论
为什么被折叠?



