【问题标题】:Jquery, "$.each(", function returns error in IE. 'Length' is null or not an objectJquery, "$.each(", 函数在 IE 中返回错误。'Length' 为空或不是对象
【发布时间】:2010-02-04 20:53:37
【问题描述】:

我的代码在 FireFox 中运行良好,但我的用户仅限于 IE。我在 IE 中遇到了一个错误,与我的 JQUERY 函数有关。

 populateTable:function(returnList) {


     var self = this;
     var eat = $.evalJSON(returnList.firstChild.textContent)
     $.each(eat,function() {


$("<tr><td>" + this.reportId + "</td><td>" + this.description + "</td><td>" + 
this.drawingNumber + "<td></tr>").insertAfter(self.tblResults[0].childNodes[1]);

 })


}

IE 在 $.each 上出错,消息如下:

'Length' 为空或不是对象

对于 $.each 函数有什么想法或解决方法吗?

更新:returnList 是来自 Ajax 调用的 XML 文档对象。我正在尝试检索位于 XML 标记内的 JSON 对象字符串。

【问题讨论】:

  • 请发布整个 $.each() 调用...当我们不知道您在运行什么时,无法说出问题所在。
  • 查看returnList.firstChild.textContent 是否返回一个数组?根据你的说法,我可以假设它在 FF 和其他人中工作吗?
  • 是的,它在 FireFox 和 Chrome 中工作。只是不是 IE
  • 是的 returnList.firstChild.textContent 正在返回一个数组
  • 如果你用像alert('in $.each()!'); 这样简单的东西替换函数体,你还会得到错误吗?那将是我的第一个调试步骤,以确定它是函数体还是遇到问题的eat 对象

标签: asp.net javascript jquery internet-explorer


【解决方案1】:

你的问题可能出在这一行

returnList.firstChild.textContent

由于 returnList 是一个 XML DOM 对象,Internet Explorer 会遍历和访问与现实世界其他部分不同的内容(即 FF 等)。所以,我会添加更多的 jQuery 来为你完成这项工作。

$(returnList).find('string').text();

这应该会在 all browsers supported by jQuery 中返回您的 JSON 字符串。

此外,如果您尝试插入一行,您会以一种奇怪的方式进行操作。假设 self.tblResults[0] 是您想要将行附加到的表 DOM 对象,试试这个:

$(self.tblResults[0]).append("<tr><td>" + this.reportId + "</td><td>" + this.description + "</td><td>" + this.drawingNumber + "</td></tr>");

【讨论】:

    【解决方案2】:

    我在使用 jquery 1.6.2 时遇到了同样的问题。 我在 jquery(最小化版本)中更改了 each 方法来解决问题,直到他们修复了错误(Ticket #9974),它对我很有用。

    在 jquery-1.6.2.min.js 上的 char 12361 我添加了这个条件:if(!a)return;

    所以这个字符的代码看起来像:

    each:function(a,c,d){if(!a)return;var f,g=0,h=a.length,i=h===b||e.isFunction(a);

    代替:

    each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);

    希望对某人有所帮助。

    【讨论】:

      【解决方案3】:

      您的最后一个结束“td”标签缺少斜杠

      【讨论】:

        【解决方案4】:

        如果tblResult是一张表,它只会有一个子节点,在IE中是一个&lt;tbody&gt;(至少有时候,不知道是不是一直这样)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-03-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-27
          • 1970-01-01
          • 2014-04-21
          相关资源
          最近更新 更多