Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当我的函数抛出错误时防止JS完全断电?_Javascript_Jquery_Error Handling_Scroll - Fatal编程技术网

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 + "]");
}