javascript if语句问题

javascript if语句问题,javascript,Javascript,当if语句为false时,它永远不会发出警报(“end”)?当它为真时,它将正确执行。为什么? 浏览器错误控制台中是否有错误?我猜这是因为它试图计算一个不存在的属性,这导致它失败(永远不会到达==undefined)。您可以只检查属性是否存在,或者使用typeof检查属性是否未定义 function valid() { begin_checked = false; end_checked = false; alert("begin_checked: " +begin_c

当if语句为false时,它永远不会发出警报(“end”)?当它为真时,它将正确执行。为什么?

浏览器错误控制台中是否有错误?我猜这是因为它试图计算一个不存在的属性,这导致它失败(永远不会到达
==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);
    }

}