Javascript 当我的函数抛出错误时防止JS完全断电?
我只是不知道如何解决这个问题,尽管它可能相当简单。 我编写了一个定制的滚动函数,它只需将整个页面滚动到页面上某个元素的某个位置Javascript 当我的函数抛出错误时防止JS完全断电?,javascript,jquery,error-handling,scroll,Javascript,Jquery,Error Handling,Scroll,我只是不知道如何解决这个问题,尽管它可能相当简单。 我编写了一个定制的滚动函数,它只需将整个页面滚动到页面上某个元素的某个位置 function scroll(selector, animate, viewOffset) { pageOffset = selector.offset(); scrollPos = pageOffset.top - viewOffset; if ( animate ) { $('html,
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)代码>
此函数工作得非常好,但是如果传递的选择器不存在,则该函数当然会抛出以下错误
pageOffset = selector.offset();
scrollPos = pageOffset.top - viewOffset;
未捕获的TypeError:无法读取null的属性“top”
如果出现这个错误,我的JS就不能再工作了
当我传递一个不存在的选择器时,函数不会抛出错误或只是不会被触发,我如何解决这个问题
任何想法,谢谢 使用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 + "]");
}
使用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 + "]");
}