2013-05-23 4 views
1

Привет Я пытаюсь создать XML из цикла for. Но с этим ниже кодом я получаю только последний элемент, найденный на странице. Не все из них, как я ожидал.Создание XML из цикла for

Считают, что есть много элементов на странице с идентификаторами, как «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)  

Что я делаю неправильно здесь

+1

Внутри цикла for вы выполняете '$ ('[id^=" textHolder "]')' на каждой итерации, которая выбирает ВСЕ элементы, которые соответствуют селектору. Затем вы получаете идентификатор первого совпадающего элемента и содержимого первого совпадающего элемента. Это явно не то, что вы хотите. –

+0

Рассмотрите возможность использования ['eq' селектора] (http://api.jquery.com/eq-selector/). – mg007

ответ

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) 
+0

Ну, вот что я называю идеальным ответом! Благодаря! Работает как шарм! – Kim

0

Я вижу несколько вопросов. t видеть, где вы объявляете некоторые переменные, также вы выбираете группу элементов и пытаетесь получить идентификатор. Я считаю, что этот код очищает (не тестируется);

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)  
Смежные вопросы