【问题标题】:Object doesn't support this property or method 'eq' Internet Explorer only对象不支持此属性或方法 'eq' 仅 Internet Explorer
【发布时间】:2014-01-21 13:52:24
【问题描述】:

这个sn-p的代码...

sourcerow = $('#' + recordid);
item = sourcerow.find('td');
item.eq(1).text(itwcode);

在 Firefox 和 Chrome 中运行良好。

但是今天发现IE在这一行抛出了错误-item.eq(1).text(itwcode);

错误是Object does not support this property or method 'eq'

我想也许 'item' 没有被正确识别为 jquery 元素,所以我尝试了这个..

sourcerow = $('#' + recordid);
item = $(sourcerow.find('td'));
item.eq(1).text(itwcode);

同样的错误,所以我尝试了这个...

sourcerow = $('#' + recordid);
item = sourcerow.find('td');
$(item).eq(1).text(itwcode);

但现在 IE 从 jquery 库内部抛出错误...

Invalid calling object jquery-1.9.1.min.js line 3 character 7849

有没有办法解决或绕过这个错误?

编辑: 根据 mikakun 在 cmets 中的建议,我将变量名称从“item”更改为其他名称(“rowitem”),现在代码可以在 IE 中运行。不过这很奇怪,因为 item 不是保留字,而且它在其他浏览器中运行良好。

EDIT 2 或者 - 将名称保留为 'item' 但添加 'var' 关键字也修复了代码。 item 在另一个作用域中使用(但以非常相似的方式使用相同的类型)

【问题讨论】:

  • 你说的是哪个版本的IE?
  • 您是否尝试过单步调试 IE 调试器中的代码?您发布的代码似乎没有任何异常。
  • 它出现在我的ie 9和同事的IE 8 Greg上,IE实际上在调试器中高亮了有问题的行。不过,我会尝试逐步完成.. 看看哪一行将我发送到 jquery 库以引发错误。
  • 您知道,sourcerow.find("td") 可能没有找到您在 IE 中想象的那么多 TD 标签,这可能指向 HTML 语法错误导致 DOM 树在 IE 中不同.
  • 更改你的变量名! (即在某处声明了一个功能项

标签: javascript jquery internet-explorer-8 internet-explorer-9


【解决方案1】:

在实际意义上,如果您对项目使用编译,您可能会考虑在入口点的顶部添加

import 'core-js'

目前core-js polyfill library 是实现跨浏览器支持的最简单方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 2019-12-09
    • 2013-10-05
    相关资源
    最近更新 更多