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

如何从javascript中的tbody获取行和列?,javascript,jquery,Javascript,Jquery,我正在尝试在加载日历后将css类应用于日历。我已经确认了javascript中的所有内容,并且控制器中的方法正常工作,直到我尝试从tbody获取行为止。下面是javascript jQuery(document).ready(function() { var calendar = $('#Trafikkalender'); var date = $('#selectedDate').val(); var param = { date: date } var url

我正在尝试在加载日历后将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]);
            }
        }
    });
});
jQuery(文档).ready(函数(){
var日历=$(“#Trafikkalender”);
变量日期=$('#selectedDate').val();
var param={date:date}
var url=$('calArrayPostUrl')。数据('url');
$.post(url、参数、函数(数据){
var body=calendar.find('tbody');
//var rows=body.getElementsByTagName('tr');
var rows=body.rows;
对于(变量i=0;i
当我将鼠标悬停在chrome调试器中的行上时,它会显示行未定义。正如您所见,我尝试了另一种方法,但根据chrome,getElementsByTagName不是一个函数

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

 var rows = body.find('tr');
同样的方法也可以用于
td
元素。

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

 var rows = body.find('tr');
同样也可以用于
td
元素。

您可以使用此选项

$.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]);
        }
    }
}
$.post(url、参数、函数(数据){
var body=calendar.find('tbody');
var rows=body.find('tr');
对于(变量i=0;i
希望这有帮助!!

你可以用这个

$.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]);
        }
    }
}
$.post(url、参数、函数(数据){
var body=calendar.find('tbody');
var rows=body.find('tr');
对于(变量i=0;i

希望这有帮助!!

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

var calendar = $('#Trafikkalender');
var body = calendar.find('tbody');
…因此它没有
属性:

> console.log(body.rows);
undefined
由于您已经在使用jQuery,因此可以使用jQuery选择器一次获取所有项:

 body("td")
如果您喜欢原始DOM元素,可以从jQuery对象中提取它们:

 body[0].rows

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

var calendar = $('#Trafikkalender');
var body = calendar.find('tbody');
…因此它没有
属性:

> console.log(body.rows);
undefined
由于您已经在使用jQuery,因此可以使用jQuery选择器一次获取所有项:

 body("td")
如果您喜欢原始DOM元素,可以从jQuery对象中提取它们:

 body[0].rows

您知道jQuery有一个
.addClass()
方法吗?请查看内部循环的底部,如果该函数是实际定义的(我不这么认为),那么它不能是
jQuery.addClass()
因为
col
不是一个jQuery对象。我用详细信息编写了一个答案。啊,是的,我已经更改了cols。现在它是var col=$(cols[j]);你知道jQuery有一个
.addClass()
方法吗?如果函数真的定义了(我不这么认为),请查看内部循环的底部它不能是
jQuery.addClass()
,因为
col
不是jQuery对象。我用详细信息编写了一个答案。啊,是的,我已经更改了cols。它现在是var col=$(cols[j]);我考虑过这一点,但我认为它只返回带有该标记名的第一个元素,而不是它们的列表。这将返回tbody的所有try元素的集合。这似乎工作正常:)但var cols=rows[I]。find('td'));没有,chrome说find在这里不是一个函数。我想了想,但我认为它只返回带有该标记名的第一个元素,而不是它们的列表。这将返回tbody的所有try元素的集合。这似乎工作正常:)但var cols=rows[I]。find('td');没有,chrome说查找在这里不是一个功能。我们现在肯定正在取得进展。必须更改var col=cols[j];美元(科尔斯[j]);而且似乎运行良好。但是嘿。。。由于某种原因,我的数据不是一个2维数组,它被展平为1维数组,这是为什么?我的控制器中有:字符串[,]日期=新字符串[numWeeks,7];和:返回Json(日期);为什么它没有保留这个结构?我要问一个单独的问题。谢谢你,我们现在肯定有进展了。必须更改var col=cols[j];美元(科尔斯[j]);而且似乎运行良好。但是嘿。。。由于某种原因,我的数据不是一个2维数组,它被展平为1维数组,这是为什么?我的控制器中有:字符串[,]日期=新字符串[numWeeks,7];和:返回Json(日期);为什么它没有保留这个结构?我要问一个单独的问题。非常感谢。