我只是不知道如何解决这个问题,这可能相当简单。 我编写了一个自定义滚动功能,只需将整个页面滚动到页面上某个元素的某个位置。
function scroll(selector, animate, viewOffset) {
pageOffset = selector.offset();
scrollPos = pageOffset.top - viewOffset;
if ( animate ) {
$('html, body').animate({ scrollTop : scrollPos + 'px' }, {
duration: '500',
easing: 'easeInOutExpo'
});
} else {
$('html, body').scrollTop( scrollPos );
}
}
所以我称这个函数为...... scroll($('#something'), true, 30);
这个函数工作得很好,但如果传递的selector
不存在,那么函数当然会抛出以下错误......
pageOffset = selector.offset();
scrollPos = pageOffset.top - viewOffset;
未捕获的TypeError:无法读取null的属性“top”
如果发生错误,我的JS都不再有效。
如何解决这个问题,所以当我传递一个不存在的selector
时,该函数不会抛出错误或只是不会被解雇?
任何想法,谢谢!
答案 0 :(得分:4)
使用try / catch块
try {
pageOffset = selector.offset();
scrollPos = pageOffset.top - viewOffset;
} catch(e) {
//error objects typically contain a .name & .message property
var name = "";
if (e.hasOwnProperty("name") ) {
name = e.name; //super-defensive
}
var message = "";
if (e.hasOwnProperty("message") ) {
message = e.message; //super-defensive
}
console.log("Error occurred - " + name + " [" + message + "]");
}