IE中的jQuery偏移顶部为空

时间:2015-08-21 13:31:50

标签: javascript jquery html internet-explorer

我有一个很好的小函数,可以让我知道元素是否在DOM中可见。

我每隔一秒使用一个间隔调用它并传递参数:

setInterval(function(){
    if(isScrolledIntoView("#scene-1") == true){
       //do something
    }else{
       //do something else
    }
 },1000)

function isScrolledIntoView(elem) {
    var $elem = $(elem);
    var $window = $(window);

    var docViewTop = $window.scrollTop();
    var docViewBottom = docViewTop + $window.height();

    var elemTop = $elem.offset().top;
    var elemBottom = elemTop + $elem.height();

    return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
}

它在chrome和firefox中运行良好。但是在IE中我在声明中得到了一个错误:

var elemTop = $elem.offset().top;

我通过这种方式将它转换为香草:

var elemTop = document.getElementById(elem.replace("#", "")).offsetTop;

如果没有工作,我也将整个事情改为vanilla js并传递了没有hash标签的id。

我收到错误0x800a138f - JavaScript runtime error: Unable to get property 'top' of undefined or null reference

我不明白为什么。我知道DOM上存在元素,拼写是正确的。

************** EDIT **********************

http://jsfiddle.net/ew0ewch3/

0 个答案:

没有答案