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 に答える