Jquery没有完成元素的追加 - 最后两个没有被追加

时间:2017-01-17 13:29:19

标签: javascript jquery arrays ajax

我从ajax调用接收一个数组,并使用数组的元素构建一系列无线电盒。仅附加一些无线电盒,而不是全部,例如。在数组中仅有4个元素中,只有前两个被追加,3个元素中只有第一个被追加。 来自ajax调用的数组是预期的。 for 循环正常工作,即。要插入的文本是按预期构建的,但追加不会附加预期的批次,只会附加一些。我的想法已经用完...... 这是我的 html

<table class="std-table">
   <tr>
      <td><div id="areas"></div></td>
   </tr>
</table>

javascript

    $(document).on('pagebeforeshow', '#property-details-page', function(){   

    all_areas = new Array();
    var Q001Data = "sql=Q001&dbcall=sql_get_results_array&memid="+<?php echo $member_id?>+"&propid="+<?php echo $property_id?>;
    $.ajax({ // ### AJAX to get ALL AREAS on page load ###
        url:"pl_process_ajax_call_property_features.php",
        type:"POST",
        data : Q001Data,
        success:function(msg){
            $("#areas").html('<fieldset id="all-areas-radio" data-role="controlgroup" data-mini="true"></fieldset>');
            all_areas = JSON.parse(msg);
            var textToInsert = '';
            var i;
            for (i = 0; i < all_areas.length; ++i) {
                var area = JSON.stringify(all_areas[i][0]);
                alert(area+i);
                textToInsert  += '<input type="radio" class="all-areas" name="property-area" id="' + area + '" value="' + area + '"><label for="' + area + '">' + area + '</label>';    
                alert(textToInsert);
            }
            $("#all-areas-radio").append(textToInsert);    
            $("[type=radio]").checkboxradio();
            $("[data-role=controlgroup]").controlgroup().controlgroup("refresh");
        },
        error: function (jqXHR, textStatus, errorThrown) {
            alert("Error Q001!");
        },
    }); // ### AJAX to get ALL AREAS on page load ###
    }); // ### document.on

循环中的警报只是为了看看里面发生了什么。 textToInsert 已正确构建,但最后两个元素上缺少追加。 我试图在循环中追加,但这对结果没有影响。请帮忙。

2 个答案:

答案 0 :(得分:3)

你过早地递增你的柜台了。而不是++ i,尝试i ++

答案 1 :(得分:1)

for (i = 0; i <= all_areas.length; i++) {
    var area = JSON.stringify(all_areas[i][0]);
    alert(area + i);
    textToInsert  += '<input type="radio" class="all-areas" name="property-area" id="' + area + '" value="' + area + '"><label for="' + area + '">' + area + '</label>';    
    alert(textToInsert);
}

如果像这样使用for循环:

您正在使用i < all_areas.length,因为变量i来自0,因此您可以使用i <= all_areas.length; 还有++i你写前增量;你可以使用帖子增量i++然后你可以得到所有的单选按钮..