0

标题可能具有误导性,但我会尽力解释。

我有一个获取某些 XML 节点值的 Ajax 函数。现在我想用 xml-nodes 的值更改每个创建元素的 ID。

我有这样的东西。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_stickers被调用两次来创建一个元素?您应该设计您的函数以获取两个值并创建元素。

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 回答