Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果语句跳过或计算异常,JavaScript和jquery_Javascript_Jquery - Fatal编程技术网

如果语句跳过或计算异常,JavaScript和jquery

如果语句跳过或计算异常,JavaScript和jquery,javascript,jquery,Javascript,Jquery,所以在jQuery中,我有一个全局变量“currentSubNav”,它存储当前可见元素。以下代码在“mouseenter”上执行 我需要它来获取store元素的ID,检查是否有。如果没有,则将新的可见元素设置为默认值 $('#mainMenu a').mouseenter(function() { var newName = $(this).attr("id"); if(newName == ''){ var newName = "default"; }

所以在jQuery中,我有一个全局变量“currentSubNav”,它存储当前可见元素。以下代码在“mouseenter”上执行

我需要它来获取store元素的ID,检查是否有。如果没有,则将新的可见元素设置为默认值

$('#mainMenu a').mouseenter(function() {
    var newName = $(this).attr("id");
    if(newName == ''){
        var newName = "default";
    }
然后检查新元素是否与当前元素匹配。如果是,它将返回。如果没有,它将执行动画以引入新的动画

    if(newName == currentSubNav){
     return;
    }else{
     $("div[name=" + currentSubNav + "]").animate({"left": "+=600px", "opacity": "toggle"}, "slow");
     $("div[name=" + newName + "]").css({"margin-top": "0"});
     $("div[name=" + newName + "]").fadeIn(2000);
     $("div[name=" + currentSubNav + "]").animate({"left": "-=600px"}, 0);
     currentSubNav = newName;
     return;
    }
});
目前我正在使用Chrome,而根据开发工具的说法,这并没有发生

问题#1

“$(this).attr(“id”);”并没有像文档所声明的那样返回未定义。它似乎正在返回“”。但是,当我像上面那样使用if语句时,它会完全跳过该语句。我设置了一个断点,但它从不暂停执行,因此从不计算语句

问题#2

动画发生后,它返回并使用“newName==currentSubNav”if语句的返回,而不是在语句末尾使用返回。我想这没什么大不了的,但这不是我们想要的行为

我对JavaScript还相当陌生,似乎我缺少了一些关于JavaScript工作原理的知识。但我到处都找不到什么。有什么帮助吗


编辑:它似乎在FireFox中工作(尽管jQuery没有返回未定义,但返回的是“”)。因此,目前这是一个Chrome问题。

我将更改“newName”的赋值,如下所示:

var newName = $(this).attr('id') || 'default';
这更为惯用,它将处理null而不是空字符串的情况,反之亦然,以及实际上并不重要的情况


我怀疑您看到的一些“问题”更多地是Chrome调试器的问题,而不是代码的实际运行方式。

+1用于新名称值分配和有关Chrome调试器的注释。我经常看到Chrome(用于Mac)跳过它应该进入的块+1对于这个网站,这也是一个超级快速的回答:)非常感谢。