T.T.T.
T.T.T.

Reputation: 34623

javascript if statement question

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");
}

When the if statement is false, it never gets to alert("end") ? When it is true, it executes properly. Why?

Upvotes: 2

Views: 472

Answers (3)

Joshua Kifer
Joshua Kifer

Reputation: 1735

http://getfirebug.com/

Upvotes: 2

Kevin Crowell
Kevin Crowell

Reputation: 10140

There is probably a null pointer exception and you do not have errors outputting to your browser.

You need some output to check:

alert(document);
alert(document.dd);
alert(document.dd.begin);
alert(document.dd.begin.checked);
alert(document.dd.end);
alert(document.dd.end.checked);

If you get undefined from any of those, then your code will not execute properly.

Edit: Also, the other answers here all have good information. Read those as well.

Edit2: Alternative - Surround your code in a try/catch block and alert the error:

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);
    }

}

Upvotes: 7

TJ L
TJ L

Reputation: 24472

Are there any errors in your browsers error console? I'm guessing it's because it's trying to evaluate a property that doesn't exist, this causing it to fail (never getting to the == undefined). You can just check that the property exists or use the typeof to check if it's undefined.

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");
}

Upvotes: 2

Related Questions