我正在尝试将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的功能。
答案 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