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