1

您好我正在尝试从 for 循环创建 XML。但是使用下面的代码,我只能得到页面上找到的 Last 元素。并非所有人都像我预期的那样。

考虑到页面上有许多带有 id 的元素,例如“textHolder1、textHolder2 等。具有所有不同的内容。

查询:

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)    

我在这里做错了什么?

4

2 回答 2

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)
于 2013-05-23T14:21:14.087 回答
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)    
于 2013-05-23T14:21:35.060 回答