标题可能会产生误导,但我会尝试解释。
我有一个Ajax函数,可以获取某些XML节点的值。现在我想用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);
但那没有做任何事情,也没有给我一个错误。
答案 0 :(得分:2)
为什么你的add_stickers
被调用两次来创建一个元素?您应该设计函数以获取两个值并创建元素。
function add_sticker(idNod, textNod) {
var div = document.createElement("div");
div.id = idNod;
div.innerHtml = textNod;
//Other parts
};
答案 1 :(得分: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.
}