javascript if语句问题
当if语句为false时,它永远不会发出警报(“end”)?当它为真时,它将正确执行。为什么? 浏览器错误控制台中是否有错误?我猜这是因为它试图计算一个不存在的属性,这导致它失败(永远不会到达javascript if语句问题,javascript,Javascript,当if语句为false时,它永远不会发出警报(“end”)?当它为真时,它将正确执行。为什么? 浏览器错误控制台中是否有错误?我猜这是因为它试图计算一个不存在的属性,这导致它失败(永远不会到达==undefined)。您可以只检查属性是否存在,或者使用typeof检查属性是否未定义 function valid() { begin_checked = false; end_checked = false; alert("begin_checked: " +begin_c
==undefined
)。您可以只检查属性是否存在,或者使用typeof检查属性是否未定义
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 (!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");
}
如果其中任何一个未定义,那么代码将无法正确执行
编辑:另外,这里的其他答案都有很好的信息。也要读这些
Edit2:可选-将代码包围在try/catch块中,并警告错误:
alert(document);
alert(document.dd);
alert(document.dd.begin);
alert(document.dd.begin.checked);
alert(document.dd.end);
alert(document.dd.end.checked);
这是对代码的逐字剪切和粘贴吗?是的,我注释掉了其他部分以进行调试,我只是将它们删除了。您有错误吗?整个DOM下到document.dd.begin.checked是否存在?ff没有显示有错误,谢谢。这也是建议的,但他删除了他的帖子。这不应该是catch(e)而不是catch(异常e)?我很确定JS没有命名的异常类型。
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);
}
}