如何在javascript中从tbody获取行和列?

时间:2016-07-25 07:14:03

标签: javascript jquery

我正在尝试将css类加载到日历之后。我已经确认了javascript中的所有内容,并且控制器中的方法正常工作,直到我尝试从tbody获取行。这是javascript。

jQuery(document).ready(function() {
    var calendar = $('#Trafikkalender');
    var date = $('#selectedDate').val();
    var param = { date: date }
    var url = $('#calArrayPostUrl').data('url');
    $.post(url, param, function(data) {
        var body = calendar.find('tbody');

        //var rows = body.getElementsByTagName('tr');
        var rows = body.rows;

        for (var i = 0; i < rows.length; i++) {
            //var cols = rows[i].getElementsByTagName('td');
            var cols = rows[i].cells;
            for (var j = 0; cols.length; j++) {
                var col = cols[j];
                col.addClass(data[i][j]);
            }
        }
    });
});

当我将鼠标悬停在chrome中的调试器中的行时,它会忽略行未定义。你可以看到我尝试了另一种方法,但getElementsByTagName不是根据chrome的功能。

3 个答案:

答案 0 :(得分:2)

您可以使用此

$.post(url, param, function(data) {
    var body = calendar.find('tbody');
    var rows = body.find('tr');

    for (var i = 0; i < rows.length; i++) {
        var cols = $(rows[i]).find('td');
        for (var j = 0; cols.length; j++) {
            var col = cols[j];
            col.addClass(data[i][j]);
        }
    }
}

希望这会有所帮助!!

答案 1 :(得分:1)

您可以使用传递标记名称的find()方法:

 var rows = body.find('tr');

同样可以用于td元素。

答案 2 :(得分:0)

body是一个jQuery对象,而不是DOM元素:

var calendar = $('#Trafikkalender');
var body = calendar.find('tbody');

...所以它没有rows属性:

> console.log(body.rows);
undefined

由于您已经在使用jQuery,因此您可以使用jQuery选择器一次性获取所有项目:

 body("td")

如果您更喜欢原始DOM元素,可以从jQuery对象中提取它们:

 body[0].rows