0

タイトルは誤解を招く可能性がありますが、説明しようとします。

いくつかの XML ノードの値を取得する Ajax 関数があります。ここで、作成されたすべての要素の ID を xml-nodes の値で変更したいと考えています。

私はこのようなものを持っています。XML ファイル

<notes>
    <note>
        <text>Hello Dog</text>
        <id>1</id>
    </note>
    <note>
        <text>Hello Cat</text>
        <id>1</id>
    </note>
</notes>

すべてのテキストノードを呼び出すために、ループを使用します

stickers = myXML.getElementsByTagName("note");
for( i = 0; i < stickers.length; i++) {
    var idNod =  (stickers[i].getElementsByTagName("id")[0].childNodes[0].nodeValue);
    var textNod = (stickers[i].getElementsByTagName("text")[0].childNodes[0].nodeValue);
    add_sticker(idNod);
    add_sticker(textNod);
}

// add_sticker() は要素を動的に作成した関数です ...

したがって、これの出力は次のようになります

Note1 = Hello Dog id 1,
Note2 = Hello Cat id 2

しかし、どういうわけかidNodを使用してID属性として使用したいので、次のようになります

<div id=1>hello dog</div>
<div id=2>hello Cat</div>

入ったループで

stickers[i].setAttribute("id", idNod);

しかし、それは何もしませんでした。エラーも発生しませんでした。

4

2 に答える 2

2

add_stickers1 つの要素を作成するために 2 回呼び出されるのはなぜですか? 両方の値を取り、要素を作成するように関数を設計する必要があります。

function add_sticker(idNod, textNod) {
    var div = document.createElement("div");
    div.id = idNod;
    div.innerHtml = textNod;

    //Other parts
};
于 2013-03-18T15:20:48.350 に答える
1

add_stickers が何をするものなのか正確にはわからないので、少しだけ闇に突き刺しています。idNod 値と textNod 値の両方を渡し、目的の div を出力する関数を作成します

function addValues(id, text) {
   var div = "<div id=\"" + id + "\">" + text + "</div>";

   //add code here to append the above div to whatever element you need it to go to.
}
于 2013-03-18T15:16:22.397 に答える