AJAX和XML多项选择测验 - 选择加载到同一个var

时间:2016-06-15 20:58:01

标签: javascript jquery ajax xml

我无法让选择在不同的行上分开,我不知道为什么,也无法找出原因

XML:

<q>
    <qNum>1</qNum>
    <qText>What is the side of a hammer called?</qText>
    <choice>Hammer</choice>
    <choice>Face</choice>
    <choice>Side of the hammer</choice>
    <choice>The check</choice>
</q>

AJAX:

$(document).ready(function(e) {

$.get('quiz.xml', function (d){

    var html;

    var title = $(d).find('title').text();
    var desc = $(d).find('description').text();
    html = '<div><h1>'+title+'</h1><br><h3>'+desc+'</h3><br></div>';
    $('#1').append(html);

    $(d).find('q').each(function(index, element) {

        var $q = $(this);
        var qNum = $q.find('qNum').text();
        var qText = $q.find('qText').text();
        var html2 = '<div><p>'+qText+'</p>';

        $q.find('choice').each(function(index, element) {
            var choice = $q.find('choice').text();
            html2 += '<input type="radio" name="q'+qNum+'" class="choice" value="'+choice+'" /><label class="choice">'+choice+'</label><br>';
        });

        $('#1').append($(html2)); 

    });

});

});

每次都会将所有选项添加到var中,我无法弄清楚如何通过保留相同的标记名称来解决它们

2 个答案:

答案 0 :(得分:0)

你应该改变

var choice = $q.find('choice').text();

var choice = element.text();

我想。它的外观是,对于每个选项,您使用$q.find('choice')选择所有选项,而您只需要当前正在迭代的选项,即element

答案 1 :(得分:0)

请将其更改为

    var choice = element.textContent;