繁体   English   中英

IE8返回“对象预期”原型

[英]IE8 returns 'Object expected' prototype

我有这段代码,在所有浏览器和IE9>上都可以正常工作,但是在IE8中,它使我在第一行( Array.prototype... )上看到了JScript Object Expected

this.items = Array.prototype.slice.call( document.querySelectorAll( '#' + this.el.id + ' > li' ) );
            this.itemsCount = this.items.length;
            this.itemsRenderedCount = 0;
            this.didScroll = false;

我尝试将document.querySelectorAll( '#' + this.el.id + ' > li' )更改$(this).attr("id") -相同的错误。

但是,当我将此行更改为简单的jquery选择器时,例如$("#someId") ,它可以正常工作。

有任何想法吗?

这是因为IE8和更低版本需要内置对象作为内置Array方法的this值。 您传递的集合是一个宿主对象。

您需要手动进行转换。

这是一个简单的例子:

function _slice(arr) {
    try {   // try using .slice()
        return Array.prototype.slice.call(arr);
    } catch(e) {
            // otherwise, manually create the array
        var result = [];
        for (var i = 0; i < arr.length; ++i)
            result.push(arr[i]);
        return result;
    }
}

this.items = _slice( document.querySelectorAll( '#' + this.el.id + ' > li' ) );

旁注,由于this.el必须是ulol元素,因此其子元素必须是li元素,为什么不这样做呢?

this.items = _slice( this.el.children );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM