即使条件为假,如果条件也会进入Javascript代码执行

时间:2011-08-26 12:10:43

标签: javascript jquery

这是我见过的最奇怪的行为之一。以下是js代码段:

else if ($("*[id$=ddlDefaultPurpose]").val() == 2) {
    if ($("*[id$=ddlJobCategory]").val() == -1) {
        ShowMessageStrip(errorJobCategory);
        formIsValid = false;
    }
    //else if (!TryParseSalaryOffered($("*[id$=txtCurrentSalary]").val())) {
    //    ShowMessageStrip(errorCurrentSalary);
    //    formIsValid = false;
    //}
}

现在代码执行时,$("*[id$=ddlJobCategory]").val()不等于-1。这在Firebug中可以清楚地看到。现在发生的是,在评估条件之后,代码应该出来,而是转到行formIsValid = false。它会跳过ShowMessageStrip(errorJobCategory)

为什么会发生这种情况?

1 个答案:

答案 0 :(得分:0)

说明显而易见,听起来你的代码没有像你想象的那样运行。

您确定某处没有=而不是==吗?您确定您的括号全部匹配(代码未在此处显示)吗?尝试检查jslint。

formIsValid在哪里声明?它看起来像代码中的全局。

另外,你确定没有调用ShowMessageStrip() - 你试过在函数中放一个console.log(并没有别的)吗?