Javascript 错误:无法读取属性';顶部';未定义的
我需要这方面的帮助,因为它正在显示,我尝试使用全局变量等,但问题仍然存在Javascript 错误:无法读取属性';顶部';未定义的,javascript,jquery,Javascript,Jquery,我需要这方面的帮助,因为它正在显示,我尝试使用全局变量等,但问题仍然存在 var $ = jQuery; var $window = $(window), $moving1 = $(".scroller1"), $holder1 = $("#scroller-wrap1"), offset1; $window.load(function() { offset1 = $holder1.
var $ = jQuery;
var $window = $(window),
$moving1 = $(".scroller1"),
$holder1 = $("#scroller-wrap1"),
offset1;
$window.load(function() {
offset1 = $holder1.offset();
});
$window.scroll(function() {
if ($window.scrollTop() > offset1.top) {
$moving1.addClass('fixed');
} else {
$moving1.removeClass('fixed');
}
if ($window.scrollTop() > (offset1.top + $holder1.height() - $moving1.height() - 60)) {
$moving1.removeClass('fixed', 1000);
}
//console.log("scroll: " +$window.scrollTop());
});
基本上,我是在检查窗口是否完全加载,这样我就可以无误地进行计算,但我猜这是不正确的
这是wordpress的内部版本,这就是我需要jQuery部分的原因。好的。错误来自此命令:
if ($window.scrollTop() > offset1.top) {
这意味着offset1
是未定义的
。现在,您正在.load
事件中初始化offset1
,但您将其设置为等于$holder
,并且$holder1
在文档准备就绪之前已初始化,因此它变为未定义的
只需添加一个函数,您的代码就可以大大减少。您也不必这样做,因为这是自动的:
//将函数传递给JQuery将创建一个“document.ready()”回调
//生成DOM时将自动执行的函数。
$(函数(){
变量$window=$(window);
变量$moving1=$(“.scroller1”);
变量$holder1=$(“#scroller-wrap1”);
var offset1=$holder1.offset();
//JQuery建议使用.on()函数来绑定
//与事件方法相反的事件回调。
$window.on(“滚动”,函数(){
如果($window.scrollTop()>offset1.top){
$moving1.addClass('fixed');
}否则{
$moving1.removeClass('fixed');
}
如果($window.scrollTop()>(offset1.top+$holder1.height()-$moving1.height()-60)){
$moving1.removeClass('fixed',1000);
}
});
});代码>
正常。错误来自此命令:
if ($window.scrollTop() > offset1.top) {
这意味着offset1
是未定义的
。现在,您正在.load
事件中初始化offset1
,但您将其设置为等于$holder
,并且$holder1
在文档准备就绪之前已初始化,因此它变为未定义的
只需添加一个函数,您的代码就可以大大减少。您也不必这样做,因为这是自动的:
//将函数传递给JQuery将创建一个“document.ready()”回调
//生成DOM时将自动执行的函数。
$(函数(){
变量$window=$(window);
变量$moving1=$(“.scroller1”);
变量$holder1=$(“#scroller-wrap1”);
var offset1=$holder1.offset();
//JQuery建议使用.on()函数来绑定
//与事件方法相反的事件回调。
$window.on(“滚动”,函数(){
如果($window.scrollTop()>offset1.top){
$moving1.addClass('fixed');
}否则{
$moving1.removeClass('fixed');
}
如果($window.scrollTop()>(offset1.top+$holder1.height()-$moving1.height()-60)){
$moving1.removeClass('fixed',1000);
}
});
});代码>
发生了什么问题?请澄清你的观点question@CalvinNunesI在控制台上获取“错误:无法读取未定义的属性'top'”发生了什么问题?请澄清你的观点question@CalvinNunesI在控制台上获取“错误:无法读取未定义的属性'top'”。我需要jQuery部分,因为我在主题选项=Wordpress自定义中使用它theme@FilipeOS好吧,如果你这么说的话。但是,您仍然需要解决我答案中的要点theme@FilipeOS好吧,如果你这么说的话。但是,你仍然需要解决我回答中的要点。