jQuery控制台错误:无法读取属性'top'的未定义
jQuery Console Error: Cannot read property 'top' of undefined
此脚本平滑滚动我的#anchor链接,并由于固定的标头高度不同而创建适当的偏移量。
经过几个小时的故障排除/研究,我不明白为什么"top"是未定义的一切都按预期运行,但当我从另一个页面点击导航(a.anchrlink)时,总是会出现此错误。就在页面加载之前,控制台中会弹出此错误。当页面加载时,这个错误就消失了。
jQuery:
jQuery(document).ready(function($){
var $root = $('html, body');
function getFixedOffset($) {
if($(window).scrollTop() === 0) {
return 100;
}
else {
return 55;
}
}
$('a.anchorlink').click(function() {
var href = $.attr(this, 'href');
var targetID = href.substr(href.indexOf("#") + 1);
if (targetID.length) {
var lengthID = $("#" + targetID).offset().top;
$root.animate({
scrollTop: lengthID - getFixedOffset($)
}, 850, function() {
window.location.hash = lengthID;
});
return false;
}
});
})
HTML:
<ul class="menu">
<li"><a href="/about#mission" class="anchorlink">Sub-link 1</a></li>
<li"><a href="/about#history" class="anchorlink">Sub-link 2</a></li>
</ul>
<!-- All other pages don't have hashes and will spit the error before load -->
正如您所看到的,我已经确保targetID存在(不是零),以便请求top属性。我可以采取其他步骤吗?或者你需要更多关于吐出错误的页面的信息吗?
我建议你做下一步,因为可能你的元素目标不存在:
if (targetID.length && $("#" + targetID).length > 0) {...
您只验证了href的内容,但没有验证DOM中是否存在元素。因此,通过这种双重检查,您可以确保尝试使用不存在的元素执行某些操作。
相关文章:
- jQuery控制台错误:无法读取属性'top'的未定义
- 无法仅在活动服务器上读取未定义错误的属性“top”
- 正在尝试滚动页面:未捕获类型错误:无法读取属性'top'的未定义
- 未捕获的类型错误:无法读取属性'top'的未定义
- 未捕获的类型错误:无法读取未定义的属性“top”
- JavaScript 运行时错误:无法获取未定义或空引用的属性“top”
- 无法读取未定义的链接 href 的属性“top”
- 未捕获的类型错误:无法读取未定义错误的属性“top”
- 偏移 JavaScript 滚动:无法读取未定义错误的属性“top”
- TypeError:无法读取属性'top'的未定义
- 无法读取属性'top'未定义的Jquery/javascript
- 未捕获的类型错误:无法读取属性'top'的未定义(popupWindow.top.close();)
- 控制台错误:未捕获类型错误:无法读取属性'top'的未定义
- 未捕获的TypeError: Cannot read property 'top'的定义
- 不能读取property 'top'未定义的Ruby on Rails项目
- JavaScript中的Top或parent在使用FireFox或Opera的SharePoint 2010中未定义
- 未捕获的TypeError: Cannot read property 'top'的定义
- 不能读取property 'top'的未定义- jQuery
- 无法读取属性'top'未定义的(重复2次)
- 未捕获的类型错误:无法读取未定义的属性“top”