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

标签 javascript jquery web

我正在尝试使用表列中的值动态购买一些复选框。虽然表是按照应有的方式创建的(我使用对服务器的获取请求动态填充它),但我无法从其任何列中获取值,因此我可以使用它们。这是我的代码:

$(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) 会打印 [],而它应该填充一些已添加到我的表中的值。我做错了什么?

最佳答案

移动createBox();在 xmlhttp.onreadystatechange 函数中调用 $.each 后触发

  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); 
            });
            createBox();
       }
       else if (xmlhttp.status == 400) {
          alert('There was an error 400');
       }
       else {
           alert('something else other than 200 was returned');
       }
    }
};

关于javascript - JQuery:无法从表列中获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44764900/

相关文章:

javascript - 使用 Parse Javascript SDK 显示来自网络返回的嵌套数据

javascript - 如何为 imgProgress.js 插件创建动画?

mysql - 加密数据库主键以在客户端进行混淆

python - 无法从服务器的Python脚本播放音频

php - 文件放置内容换行

javascript - HTML5 Canvas 随机方向

javascript - angular ui 可排序回调

javascript 数组寻找相似的对象 - 如果不存在则添加到数组

javascript - 滚动时固定标题和导航栏下的内容

jQuery、ajax 请求在 IE 上使用 JSON 失败