使用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节点。在我循环遍历该数组之前,我发现&amp;删除XML中的任何现有Location
。
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
的{{1}}部分。
知道问题可能是什么?我怀疑是IE8不喜欢XML,但不知道如何解决这个问题。非常感谢有关更好地做我正在做的事情的任何反馈或想法。
谢谢!
答案 0 :(得分:0)
我不确定这会有效,但我能建议的是另一种创建新节点的方法,因为看起来错误在于从提供的字符串创建节点。
for (var d = 0; d < msgArr.length; d = d+ 1) {
var $tmpLocNode = $("<Location />", { text: msgArr[d].locID });
zXML.find("Locations").append($tmpLocNode);
}