我尝试使用JavaScript更改表格中行的背景,但它无法正常工作。 这是我code。但是我尝试使用html及其工作创建一个表。 P.S:我想使用webkit。
代码:
var table = document.getElementById("tab");
var rowCount = table.rows.length;
for(var i=0;i<6;i++) {
row = table.insertRow(rowCount);
row.id = "row"+i;
cell1 = row.insertCell(0);
var content = document.createElement("output");
content.innerHTML = i ;
cell1.appendChild(content);
rowCount++;
}
$(document).ready(function(){
$('td').each(function(i) {
$('#tab').on('click', '#row'+i, function(){
document.getElementById("row"+i).style.background = 'white';
//alert(i);
});
});
//example2
$('#td1').on('click', function(){
document.getElementById("td1").style.background = 'white';
});
});
答案 0 :(得分:2)
您遇到的问题是因为您在TD
上设置背景渐变,然后设置TR
的背景颜色。由于TD在TR内,您只是没有看到您的更改被应用。
答案 1 :(得分:2)
您不应该在循环中分配事件处理程序,尤其是在您不需要:
时$('#tab').on('click', 'tr', function () {
$('td,th', this).css('background', 'white');
});
答案 2 :(得分:1)
它是backgroundColor,而不是背景。
答案 3 :(得分:1)
第一个问题是关闭问题.. ..
Click事件将始终指向 i的最后一个实例
将您的代码更改为此
$('td').each(function(i) {
(function(num) {
$('#tab').on('click', '#row' + num, function() {
document.getElementById("row" + num).style.background = '';
//alert(i);
});
})(i)
});
这可能不是非功能代码的主要原因..
答案 4 :(得分:0)
您想要更改整行还是当前单元格的颜色?您当前的选择器仅适用于特定单元格。
// for the complete row
$(document).ready(function(){
$('td').on('click',function(){
$(this).closest('tr').find('td').css({'background':'red'});
});
});
// or for the active cell..
$(document).ready(function(){
$('td').on('click',function(){
$(this).css({'background':'red'});
});
});
请参阅此小提琴http://jsfiddle.net/axelmichel/2KUCz/以获取行解决方案。如果您希望每个表具有不同的行为,可以在以下位置修改选择器:
$('#tab').find.('td').on('click',...