从for循环创建XML

时间:2013-05-23 14:17:31

标签: jquery for-loop

您好我正在尝试从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)    

我在这里做错了什么?

2 个答案:

答案 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)