JQuery:无法从表列中获取元素

时间:2017-06-26 17:03:25

标签: javascript jquery web

我正在尝试动态使用表格列中的值来购买一些复选框。虽然表是如何创建的(我使用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)打印 [] ,当它应该填充已经添加到我的表中的一些值。我做错了什么?

1 个答案:

答案 0 :(得分:1)

移动createBox();在你的xmlhttp.onreadystatechange函数

中调用$ .each之后触发
getContentPane().validate();
 getContentPane().repaint();