0

使用 jQuery 1.9.1 并创建类似于下面的 XML。它是根据页面上选中的复选框数组中的项目构建的。XML 结构为:

<MyXML>
   <Msg>This is a test message.</Msg>
   <MsgTime>2013-10-15 08:30:00.000</MsgTime>
   <Locations>
      <Location>Panel1</Location>
      <Location>Panel2</Location>
      <Location>Panel3</Location>
   </Locations>
</MyXML>

单击提交按钮时,所有选中的复选框都被推送到一个数组中,然后我循环遍历该数组以创建<Location>XML 节点。就在我遍历该数组之前,我找到并删除Location了 XML 中的任何现有内容。

zXML.find("Location").remove();

for (var d=0; d < msgArr.length; d= d+ 1) {
    var tmpLocNode = "<Location>" + msgArr[d].locID + "</Location>";
    zXML.find("Locations").append( tmpLocNode );
    }

在 FF 中,上面的代码效果很好。

但是,在 IE8 中,for 循环的最后一行:

zXML.find("Locations").append( tmpLocNode );

抛出错误,“对象不支持此属性或方法”并在 jquery.js 模块中的第 6470 行停止。那条线是:

tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[2];

并且是在jquery 模块中的ELSE一部分。// Convert html into DOM nodes

知道问题可能是什么吗?我怀疑是 IE8 不喜欢 XML,但不知道如何解决这个问题。将不胜感激任何反馈或想法,以更好地做我正在做的事情。

谢谢!

4

1 回答 1

0

我不确定这是否可行,但我只能建议另一种创建新节点的方法,因为看起来错误是从提供的字符串创建节点。

for (var d = 0; d < msgArr.length; d = d+ 1) {
    var $tmpLocNode = $("<Location />", { text: msgArr[d].locID });
    zXML.find("Locations").append($tmpLocNode);
}
于 2013-10-15T13:00:53.663 回答