偏移 JavaScript 滚动:无法读取未定义错误的属性“top”
Offset javascript scroll: cannot read property 'top' of undefined error
我正在尝试使用此 javascript 将侧边栏导航设置为偏移并变得滚动粘稠。错误是:
"无法读取未定义的属性'top'"
错误在var stickyNavTop = $('.toc').offset().top - 222;
,它阻止其他js正常工作。
使用脚本的示例页面
脚本:
// Sidebar Nav Sticky with Scroll
jQuery(document).ready(function() {
var stickyNavTop = $('.toc').offset().top - 222;
var stickyEnd = $('.content').height() - 111; // stores height of .content element
var praiseH = $('.praise').height(); //height of praise bar if present
var stickyNav = function(){
var scrollTop = $(window).scrollTop();
if (scrollTop > stickyNavTop) {
$('.toc').addClass('sticky-nav');
$('.content').css('float','right'); //needs float:right; applied due to .sticky-nav class being positioned
} else {
$('.toc').removeClass('sticky-nav');
$('.content').css('float','left');
}
if ($(window).scrollTop() >= (stickyEnd - praiseH) ) {
// $('.toc').addClass('bottom'); removed for fadeIn/fadeOut
$('.toc').fadeOut('slow');
} else {
$('.toc').fadeIn('slow');
}
};
stickyNav();
$(window).scroll(function() {
stickyNav();
});
});
任何关于如何钝的帮助是值得赞赏的。 谢谢!
您可以使用
console.log()
函数实际查看任何元素的本机属性。我不知道你是否仅限于JQuery,但是原生JavaScript解决方案每次都能解决问题;)
我发现这个:https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollTop
可能会有所帮助
添加一个 if 语句以查看我的 .toc
元素是否实际填充并存在,现在错误消失了,它可以在它应该运行的页面上工作。
谢谢!
if ($('.toc').length > 0) {
var stickyNavTop = $('.toc').offset().top - 222;
var stickyEnd = $('.content').height() - 111; // stores height of .content element
var praiseH = $('.praise').height(); //height of praise bar if present
var stickyNav = function(){
var scrollTop = $(window).scrollTop();
//output test heights
// $("#test").html($(window).scrollTop());
// $("#height").html(stickyEnd);
// $("#praise").html(footerH);
if (scrollTop > stickyNavTop) {
$('.toc').addClass('sticky-nav');
$('.content').css('float','right'); //needs float:right; applied due to .sticky-nav class being positioned
} else {
$('.toc').removeClass('sticky-nav');
$('.content').css('float','left');
}
if ($(window).scrollTop() >= (stickyEnd - praiseH) ) {
// $('.toc').addClass('bottom'); removed for fadeIn/fadeOut
$('.toc').fadeOut('slow');
} else {
$('.toc').fadeIn('slow');
}
};
stickyNav();
$(window).scroll(function() {
stickyNav();
});
}
相关文章:
- Jqx图表给出错误错误:
属性高度=“-1”的负值无效 - 谷歌地图 API 错误:属性<航点>::中的错误
- 未捕获的类型错误:属性'$'对象[object Window]的
- 错误“属性'日期选择器'在带有打字稿的类型'IAugmentedJQuery'上不存在
- 类型错误属性 然后是未定义的
- 挖空引用错误 - 属性在存在时未定义
- “语法错误:属性列表后缺少}” 如何使Javascript符号证明
- 错误:
属性宽度=“NaN” 6d3.v3.min.js:1 的值无效: 属性 x=“NaN” - Ajax 和 JS on select_taf;语法错误:属性列表后缺少 }
- 获取错误语法错误:属性列表 url 后缺少 }:http://localhost/mcportal/public/pos
- Google Maps JavaScript : 未捕获错误: 属性
- 类型错误:属性 1 不可配置,无法删除
- Javascript/HTML错误“属性”selectReason“的值为null或未定义,而不是函数对象
- Mootools'未捕获的类型错误:属性'容器'对象#<对象>不是函数'添加
- 错误:
属性残雪=“NaN"在dimple.js - D3.js错误:
属性用于折线图 - 错误:d3.v4.min.js:3错误:<属性宽度:期望长度,"
- SVG路径错误"d"属性
- 错误:
d =“属性.饼状图 - 未捕获的类型错误:属性'fn'对象[object DOMWindows]的不是函数