2017-04-10 118 views
0

我试图通过getAttribute为具有蓝色背景的单元格将表格的单元格循环,然后将其更改为黄色背景。我知道CSS可以轻松完成这项任务,但是我想了解使用JavaScript。使用getAttribute更改单元格的背景颜色

这里是我的代码:

<table> 
    <tr> 
    <td> 
     Cell 1 
    </td> 
    <td> 
     Cell 2 
    </td> 
    </tr> 
    <tr> 
    <td> 
     Cell 3 
    </td> 
    <td style="background-color:blue"> 
     Cell 4 
    </td> 
</tr> 
</table> 



var cells = document.getElementsByTagName('td'); 

for(i=0; i < cells.length; i++) { 
    if(cells[i].getAttribute('backgroundColor') == true) { 
    this.style.backgroundColor = "yellow"; 
    } 
} 

控制台日志不会返回任何错误。任何想法家伙?

谢谢!

+1

背景颜色不是标签的属性。所以它返回null。这就是为什么你没有得到一个错误 – TypedSource

+0

你不需要查询属性。您只需要查看该单元格当前是否具有蓝色背景。改变你的'if'为:if(cells [i] .style.backgroundColor ===“blue”)...' –

回答

1

请注意,background属性不是DOM属性,它是样式属性。

注意:如果你指的是指定td元素,使用cells[i]代替,因为在这种特殊情况下this关键字将指实际迭代的元素,但在窗口对象。

var cells = document.getElementsByTagName('td'); 
 

 
for (i = 0; i < cells.length; i++) { 
 
    if (cells[i].style.background == 'blue') { 
 
    cells[i].style.background = "yellow"; 
 
    } 
 
}
<table> 
 
    <tr> 
 
    <td> 
 
     Cell 1 
 
    </td> 
 
    <td> 
 
     Cell 2 
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    <td> 
 
     Cell 3 
 
    </td> 
 
    <td style="background:blue"> 
 
     Cell 4 
 
    </td> 
 
    </tr> 
 
</table>

如果,你想指DOM属性,你可以应用下面的代码:

if (cells[i].getAttribute('style') == 'background:blue') { 
    cells[i].style.background = "yellow"; 
} 
+1

'getAttribute'在这里是多余的。只需使用'cells [i] .style.backgroundColor ==“blue”' –

+1

@ScottMarcus这是毫无意义的,但我已经添加了它**以防万一**如果OP真的想使用'style'属性...(: –

相关问题