function valid()
{
begin_checked = false;
end_checked = false;
alert("begin_checked: " +begin_checked);
alert("end_checked: " +end_checked);
if (document.dd.begin.checked.length == undefined || document.dd.end.checked.length == undefined )
{
alert("In undefined");
}
alert("end");
}
当if语句为false时,它永远不会报警(“结束”)?如果是真的,它会正确执行。为什么?
答案 0 :(得分:8)
可能存在空指针异常,并且您没有输出到浏览器的错误。
您需要检查一些输出:
alert(document);
alert(document.dd);
alert(document.dd.begin);
alert(document.dd.begin.checked);
alert(document.dd.end);
alert(document.dd.end.checked);
如果你从其中任何一个中得到未定义,那么你的代码将无法正常执行。
编辑:此外,这里的其他答案都有很好的信息。阅读这些内容。
Edit2:替代方案 - 在try / catch块中包围您的代码并提醒错误:
function valid(){
try{
begin_checked = false;
end_checked = false;
alert("begin_checked: " +begin_checked);
alert("end_checked: " +end_checked);
if (document.dd.begin.checked.length == undefined || document.dd.end.checked.length == undefined ){
alert("In undefined");
}
alert("end");
} catch (e) {
alert(e);
}
}
答案 1 :(得分:3)
您的浏览器错误控制台中是否有任何错误?我猜它是因为它试图评估一个不存在的属性,这导致它失败(永远不会到达== undefined
)。您可以检查该属性是否存在,或使用typeof检查它是否未定义。
if (!document.dd.begin.checked.length || !document.dd.end.checked.length)
{
alert("In undefined");
}
if (typeof document.dd.begin.checked.length == 'undefined' || typeof document.dd.end.checked.length == 'undefined' )
{
alert("In undefined");
}
答案 2 :(得分:2)