首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IE8返回“对象期望”原型

IE8返回“对象期望”原型
EN

Stack Overflow用户
提问于 2014-01-07 17:17:55
回答 1查看 702关注 0票数 2

我有这段代码,它在所有浏览器和IE9>上都很好,但是在IE8中,它在第一行(Array.prototype...)上抛出了JScript Object Expected

代码语言:javascript
复制
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") )时,它工作得很好。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-07 17:29:04

这是因为IE8和lower需要一个本机对象作为内置数组方法的this值。您要传递的集合是一个主机对象。

您需要手动进行转换。

下面是一个简单的例子:

代码语言:javascript
复制
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;
    }
}

代码语言:javascript
复制
this.items = _slice( document.querySelectorAll( '#' + this.el.id + ' > li' ) );

附带注意,既然this.el必须是ulol元素,因此它的子元素必须是li元素,那么为什么不直接这样做呢?

代码语言:javascript
复制
this.items = _slice( this.el.children );
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20977832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档