Javascript似乎说是true == false

时间:2015-02-24 03:13:39

标签: javascript jquery

我有以下js功能。

function showAttentionItem(sender)
{
    debugger;
    var assistanceRequired = sender.parent().hasClass("assistanceRequired");
    if (assistanceRequired)
    {
        sender.children('.assistanceRequiredText').fadeToggle(0);
        if (sender.children('.assistanceRequiredText').is(":visible"))
        {
            sender.children('.studentPerformanceText').hide();
        }
    }
    if (!assistanceRequired)
    {
        if (sender.parent().hasClass("studentOutsideTargetRange"))
        {
            sender.children('.studentPerformanceText').fadeToggle(0);
        }
    }
}

当我运行它时会发生什么,我点击调试器行,然后逐步执行代码。 assistanceRequiredtrue

执行sender.children('.studentPerformanceText').hide();后,它跳转到sender.children('.studentPerformanceText').fadeToggle(0);语句内的下一行是if (!assistanceRequired)

怎么可能发生这种情况?

2 个答案:

答案 0 :(得分:0)

这保证有效:

if (sender.parent().hasClass("assistanceRequired"))
{
     // do whatever here
}
else
{
    // do whatever ELSE here
}

只有一个或另一个可以在正确编码时运行,因为只有一个测试,一次测试它将是truefalse。没有可能通过你不知道的一些副作用来改变它,这很可能是正在发生的事情。这没有争议。

如果这不按您想要的方式工作,那么其他错误就是您没有显示并且没有可执行文件jsFiddle祝您好运,说服任何人像if ... else构造这样的基本内容被打破。

答案 1 :(得分:0)

我只想到一个场景来解释你所看到的。

showAttentionItem()的双重触发,在调试器中,它被视为单个调用。在第一次调用时,aidRequired为true,在第二次调用时为false。