您好我正在尝试从for循环创建XML。但是使用下面的代码我只得到页面上找到的Last元素。并非像我预期的那样全部。
请注意页面上有许多元素,其中id为“textHolder1,textHolder2等。具有所有不同的内容。
Jquery的:
var text = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><canvas>";
text += "<elements>";
text_length = $('[id^="textHolder"]').length;
for(var n = 0; n < text_length; n++){
TextElementID = $('[id^="textHolder"]').attr('id');
TextElementContent = $('[id^="textHolder"]').text();
text += "<element id='"+TextElementID+"'>";
text += "<content>"+TextElementContent;
text += "</content>";
text += "</element>";
}
text += "</elements>";
text +="</canvas>";
alert(text)
我在这里做错了什么?
答案 0 :(得分:2)
尝试使用每个循环:
var text = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><canvas>";
text += "<elements>";
$('[id^="textHolder"]').each(function(){
var TextElementID = this.id,
TextElementContent = $(this).text();
text += "<element id='" + TextElementID + "'>";
text += "<content>" + TextElementContent;
text += "</content>";
text += "</element>";
});
text += "</elements>";
text += "</canvas>";
alert(text)
答案 1 :(得分:0)
我看到一些问题。我不知道你在哪里声明一些变量,而且,你正在选择一组元素并试图获得一个ID。我相信这段代码可以清除它(未经测试);
var text = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><canvas>";
text += "<elements>";
var text_length = $('[id^="textHolder"]').length;
for(var n = 0; n < text_length; n++){
var TextElementID = $('[id="textHolder' + i + '"]').attr('id');
var TextElementContent = $('[id="textHolder' + i + '"]').text();
text += "<element id='"+TextElementID+"'>";
text += "<content>"+TextElementContent;
text += "</content>";
text += "</element>";
}
text += "</elements>";
text +="</canvas>";
alert(text)