【问题标题】:Unspecified error DOM IE未指定的错误 DOM IE
【发布时间】:2011-11-09 22:01:51
【问题描述】:

我正在使用弹出窗口构建应用程序。我在主页中使用 Ajax 获取新信息并更新弹出页面。在侧窗口(弹出窗口)中,我有一个表格,当收到新数据时,我只是在此表格中添加行。在 FF、Chrome 和 Opera 中运行良好,但是当我尝试附加子项时(无论我是否使用 jquery),IE 都会给我一个未指定的错误。我正在尝试将孩子直接附加到这样的表中:

var tableHeader = this.config.newResultsWindow.document.getElementById('newResultsTableHeader');
tableHeader.appendChild(newRow);

当我只使用innerHTML(例如this.config.newResultsWindow.document.body.innerHTML = updatedTable)时,一切正常,但表格的内容非常大,我不能每次都写完。

我能做什么?

【问题讨论】:

  • '#newResultsTableHeader' 元素的类型是什么?桌子?
  • 请提供可调试的测试用例....
  • //是thead元素。这就是我创建行的方式: buildTableRow: function (data) { var row = '', width; for (var child in data) { row += '' + data[child] + ''; } 行 += '';返回$(行); }, //并附加它: newRes.parentNode.insertBefore(row[0], newRes.nextSibling ); //这里newRes是一个thead元素。

标签: javascript jquery internet-explorer popup


【解决方案1】:

IE 不允许在不同文档之间移动节点,因此在文档 A 中创建的节点不能插入到文档 B

【讨论】:

  • IE是否支持document.adoptNodedeveloper.mozilla.org/en/DOM/document.adoptNode ... 它是 DOM 级别 3,所以我认为不是。
  • 在以前的 IE 版本中是否有替代方案?
  • 是的,有一种适用于所有浏览器的简单方法。使用$(row) 创建行时,将弹出窗口的文档对象作为$ 的第二个参数提供,因此该行将由弹出文档创建,并且您不会遇到不同文档的问题。请参阅小提琴 jsfiddle.net/doktormolle/J9KLL(它使用 iframe 而不是弹出窗口,但不同文档的问题相同)
【解决方案2】:

您是否尝试过捕捉错误,它可能告诉您的不仅仅是“未指定”:

try {
    tableHeader.appendChild(newRow);
} catch(error) {
    alert(error);
}

希望对你有帮助 抢

【讨论】:

【解决方案3】:

找到对我有用的东西。尝试在 newRow 变量中附加 HTML:

tableHeader.appendChild(newRow.html());

【讨论】:

    猜你喜欢
    • 2013-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    相关资源
    最近更新 更多