我从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 已正确构建,但最后两个元素上缺少追加。 我试图在循环中追加,但这对结果没有影响。请帮忙。
答案 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++
然后你可以得到所有的单选按钮..