Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Ошибка при составлении цикла (https://javascript.ru/forum/misc/27935-oshibka-pri-sostavlenii-cikla.html)

l@pteff 30.04.2012 11:46

Ошибка при составлении цикла
 
Здравствуйте, в xml-файле есть такие теги:
Код:

<answer>Ответ 1</answer>
<answer>Ответ 2</answer>
<answer>Ответ 3</answer>
<answer>Ответ 4</answer>

Нужно вытащить текст из тегов и оформить с радиокнопками в таком виде:
<input type="radio">Ответ 1
<input type="radio">Ответ 2
<input type="radio">Ответ 3
<input type="radio">Ответ 4

Делаю таким образом:
var count=$(XMLdata).find("answer").length;  <!--считаем количество нужных узлов, их 4-->
var text=$(XMLdata).find("answer").text();  <!--извлекаем из них текст-->
for (i=1; i<=count; i++) {          
$('div').html('<input type="radio" />'+text+''); <!--выводим в цикле текст с радиокнопками-->
}

Но в результате выводится одна радиокнопка с текстом "Ответ 1Ответ 2Ответ 3Ответ 4"
Подскажите пожалуйста, как нужно исправить код

dmitriymar 30.04.2012 12:14

а подумать над логикой сначала? не?
почему, если text извлекается всего один раз и не в цикле, на кнопке все ответы?

Раед 30.04.2012 12:23

l@pteff,
И давно ли в JS появился новый способ комментирования?
Цитата:

Сообщение от l@pteff
<!--выводим в цикле текст с радиокнопками-->

Это HTML-комментарий, не, не смущает?

l@pteff 30.04.2012 12:26

Если извлекаю в цикле-результат тот же;)
var count=$(XMLdata).find("answer").length;  /*считаем количество нужных узлов, их 4*/
for (i=1; i<=count; i++) {         
var text=$(XMLdata).find("answer").text();    /*извлекаем из них текст*/
$('div').html('<input type="radio" />'+text+'');  /*выводим в цикле текст с радиокнопками*/
}

l@pteff 30.04.2012 12:33

Раед,
исправил, это для пояснения, разумеется в самом коде этих комментов нет

FINoM 30.04.2012 13:15

Включите логику.

tenshi 30.04.2012 13:17

используй http://api.jquery.com/each/

vadim5june 30.04.2012 13:27

var count=$(XMLdata).find("answer");
for (i=1; i<count.length; i++) {
$('div').html('<input type="radio" />'+count[i].text()+'');
}

FINoM 30.04.2012 13:29

Цитата:

Сообщение от vadim5june
count[i].text()

Не правильно. count[i] — объект DOM a не jQuery. Нужно юзать innerHTML или innerText.

vadim5june 30.04.2012 13:37

ну может так
$(XMLdata).find("answer").each(function(){$('div') .html('<input type="radio" />'+$(this).text()+''); })


Часовой пояс GMT +3, время: 13:18.