我有以下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);
}
}
}
当我运行它时会发生什么,我点击调试器行,然后逐步执行代码。 assistanceRequired
是true
。
执行sender.children('.studentPerformanceText').hide();
后,它跳转到sender.children('.studentPerformanceText').fadeToggle(0);
语句内的下一行是if (!assistanceRequired)
!
怎么可能发生这种情况?
答案 0 :(得分:0)
if (sender.parent().hasClass("assistanceRequired"))
{
// do whatever here
}
else
{
// do whatever ELSE here
}
只有一个或另一个可以在正确编码时运行,因为只有一个测试,一次测试它将是true
或false
。没有可能通过你不知道的一些副作用来改变它,这很可能是正在发生的事情。这没有争议。
如果这不按您想要的方式工作,那么其他错误就是您没有显示并且没有可执行文件jsFiddle祝您好运,说服任何人像if ... else
构造这样的基本内容被打破。
答案 1 :(得分:0)
我只想到一个场景来解释你所看到的。
有showAttentionItem()
的双重触发,在调试器中,它被视为单个调用。在第一次调用时,aidRequired为true,在第二次调用时为false。