我正在尝试动态使用表格列中的值来购买一些复选框。虽然表是如何创建的(我使用get请求动态填充它),但是我无法从其任何列中获取值,因此我可以使用它们。这是我的代码:
$(document).ready(function()
{
/*
$.get("sub3",function(responseJson)
{
if(responseJson!=null)
{
$("#table1").find("tr:gt(0)").remove();
var table1 = $("#table1");
$.each(responseJson, function(key,value) {
var rowNew = $("<tr><td></td><td></td><td></td><td></td></tr>");
rowNew.children().eq(0).text(value['idp']);
rowNew.children().eq(1).text(value['producator']);
rowNew.children().eq(2).text(value['culoare']);
rowNew.children().eq(3).text(value['pret']);
rowNew.appendTo(table1);
});
}
});
*/
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == XMLHttpRequest.DONE ) {
if (xmlhttp.status == 200)
{
$("#table1").find("tr:gt(0)").remove();
var table1 = $("#table1");
var Data = JSON.parse(xmlhttp.responseText);
$.each(Data, function(key,value) {
var rowNew = $("<tr><td></td><td></td><td></td><td></td></tr>");
rowNew.children().eq(0).text(value['idp']);
rowNew.children().eq(1).text(value['producator']);
rowNew.children().eq(2).text(value['culoare']);
rowNew.children().eq(3).text(value['pret']);
rowNew.appendTo(table1);
});
}
else if (xmlhttp.status == 400) {
alert('There was an error 400');
}
else {
alert('something else other than 200 was returned');
}
}
};
xmlhttp.open("GET", "sub3", true);
xmlhttp.send();
createBox();
});
function createBox()
{
var items=[];
$('#table1 tr td:nth-child(2)').each( function()
{
items.push( $(this).text() );
});
var items = $.unique( items );
console.log(items);
for (var i = 0; i < items.length; i++)
{
addCheckbox(items[i]);
}
}
function addCheckbox(name)
{
var container = $('#cblist');
var inputs = container.find('input');
var id = inputs.length+1;
$('<input />', { type: 'checkbox', id: 'cb'+id, value: name
}).appendTo(container);
$('<label />', { 'for': 'cb'+id, text: name }).appendTo(container);
}
在函数 createbox()中,console.log(items)打印 [] ,当它应该填充已经添加到我的表中的一些值。我做错了什么?
答案 0 :(得分:1)
移动createBox();在你的xmlhttp.onreadystatechange函数
中调用$ .each之后触发getContentPane().validate();
getContentPane().repaint();