如何使用javascript/jquery循环tbody的第一个tr中的所有单元格?

如何使用javascript/jquery循环tbody的第一个tr中的所有单元格?,javascript,jquery,html,Javascript,Jquery,Html,我试图循环tbody表第一行中的所有单元格,但选择单元格时出现了一些问题。下面是我的代码: $(".datatable_footer_fixed").prepend('<div class="new-foot"></div>'); var cells = document.getElementById('table').rows[0].cells.length; var index; for(index= 0; index< cells ; index++){

我试图循环tbody表第一行中的所有单元格,但选择单元格时出现了一些问题。下面是我的代码:

$(".datatable_footer_fixed").prepend('<div class="new-foot"></div>');
var cells = document.getElementById('table').rows[0].cells.length;
var index;
for(index= 0; index< cells ; index++){
    cell = $("#table tbody tr:eq(0) td:eq("+index+")");
    if(index == 0 || index == cells-1){
        css = parseInt($(cell).css("width"));
    }else{
        css = parseInt($(cell).css("width")) + 16 + 23;
    }
    $(".new-foot").append("<div style=\"width:"+css+"px;height:20px display:inline-block;\"></div>");
}
变量单元格为空,因此var css为NaN,div append的宽度为:0px

如何修复它

编辑:

现在脚本工作了,问题是表是用JQuery的插件Datatables.js生成的,在初始化表之后,我编写了代码,但找不到tr的内容。我添加了3000毫秒的超时,现在它工作了。我修复了第n个子函数和每个函数的代码。
谢谢大家的帮助。

在jQuery中,您可以尝试以下方法

jQuery('#table tr:first-child td').each(function(index){

   cell = jQuery(this);
if(index == 0 || index == (jQuery('#table tr:first-child td').length - 1)){
    css = parseInt(cell.css("width"));
}else{
    css = parseInt(cell.css("width")) + 16 + 23;
}

 $(".new-foot").append("<div style=\"width:"+css+"px;height:20px display:inline-block;\"></div>");

})
您可以使用第n个childn作为选择器,而不是使用eq

注意:eq是选择器的jQuery扩展。为了获得更好的性能,您应该改为使用本机CSS:nth-child语法,即表tr:nth-child1,但请注意,这使用从1开始的数字,而不是从0开始的数字

您的代码将是:

$(".datatable_footer_fixed").prepend('<div class="new-foot"></div>');
var cells = document.getElementById('table').rows[0].cells.length;
var index;
for(index= 1; index<= cells ; index++){
    cell = $("#table tbody tr:nth-child(1) td:nth-child("+index+")");
    if(index == 1 || index == cells){
        css = parseInt($(cell).css("width"));
    }else{
        css = parseInt($(cell).css("width")) + 16 + 23;
    }
    $(".new-foot").append("<div style=\"width:"+css+"px;height:20px display:inline-block;\"></div>");
}

问题是因为你错过了一个机会;在内联样式之间。如果您修复了此问题,它可以正常工作:。我投票决定以印刷错误结束。@RoryMcCrossan无法发布HTML,我没有权限,为什么将for循环更改为$。每个循环都有区别?$。每个循环都是执行普通javascript for的jQuery方式。我使用$。每个,因为最容易写正确的选择项。我的观点是它不会影响任何东西。问题是HTML中的输入错误。请注意,OPs代码已经可以工作了。他们只是错过了一个机会;在我看到的样式属性中,eq仍然可能不工作,这取决于jquery版本,所以我认为使用第n个child无论如何都更好。自jQuery 1.0以来一直可用:nth child和eq做不同的事情,所以它们不能直接互换。考虑到1.0是2006年的首次公开发行,我猜这不是问题