Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.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 使用严格抛出错误_Javascript_Jquery - Fatal编程技术网

Javascript 使用严格抛出错误

Javascript 使用严格抛出错误,javascript,jquery,Javascript,Jquery,我有以下代码,使我能够滚动到我的网页上的一个位置。但是,当我使用Strict时,会出现以下错误: TypeError:undefined不是对象(正在计算'refElement.position().top') (匿名函数)main:34 ReferenceError:找不到变量:$target (匿名函数)main.js:17 请有人解释一下为什么我使用strict时它不起作用,当我把它注释掉时它起作用?我如何让它工作 谢谢 代码: “严格使用”; $(文档).ready(函数(){ $(文档

我有以下代码,使我能够滚动到我的网页上的一个位置。但是,当我使用Strict时,会出现以下错误:

TypeError:undefined不是对象(正在计算'refElement.position().top') (匿名函数)main:34

ReferenceError:找不到变量:$target (匿名函数)main.js:17

请有人解释一下为什么我使用strict时它不起作用,当我把它注释掉时它起作用?我如何让它工作

谢谢

代码:

“严格使用”;
$(文档).ready(函数(){
$(文档).on(“滚动”,onScroll);
//平滑卷轴
$('a[href^=“#“]”)。关于('click',函数(e){
e、 预防默认值();
$(文档)。关闭(“滚动”);
$('a')。每个(函数(){
$(this.removeClass('active');
})
$(this.addClass('active');
var target=this.hash,
菜单=目标;
$target=$(target);
$('html,body').stop().animate({
'scrollTop':$target.offset().top+2
},500,'swing',函数(){
window.location.hash=目标;
$(文档).on(“滚动”,onScroll);
});
});
});
函数onScroll(事件){
var scrollPos=$(document.scrollTop();
$('#菜单中心a')。每个(函数(){
var currLink=$(此);
var refElement=$(currLink.attr(“href”);
if(refElement.position().top scrollPos){
$(“#菜单中心ul li a”).removeClass(“活动”);
currLink.addClass(“活动”);
}
否则{
currLink.removeClass(“活动”);
}
});
}

您的
var
声明中有一个分号而不是逗号:

    var target = this.hash,
        menu = target;
    $target = $(target);
应该是:

    var target = this.hash,
        menu = target,
        $target = $(target);

由于对
$target
的赋值不是
var
语句的一部分,因此它表示对隐式全局变量的赋值。这在“严格”模式下是不允许的。

您的
refElement
是一个字符串(因为您为其分配了
currLink
href
属性),然后尝试对其调用
position()
方法。也许你的意思是
currLink.position().top+currLink.height()

你知道什么是
“严格使用”是什么?关键在于找到错误。尝试使用
var$target
。。。错误告诉您您不理解错误消息的哪一部分?
var refElement=$(currLink.attr(“href”)-看起来不对-应该是
var refElement=currLink.attr(“href”)
如果任何答案有帮助,请接受其中一个。
    var target = this.hash,
        menu = target,
        $target = $(target);