为何表格中元素未被找到?表格行背景色重置代码问题
表格行背景色重置失效的原因及解决办法
核心问题:你用错了
hasAttribute()方法。background-color不是<tr>元素的独立HTML属性,它是写在style属性里的CSS样式声明。而hasAttribute()只能检测元素是否存在某个HTML原生属性(比如id、class),所以rows[i].hasAttribute("background-color")永远返回false,导致重置代码根本没执行。修正方案1:直接重置所有行
不需要判断,直接给所有行设置背景色为透明,不管之前有没有设置过:for (var i = 0; i < rows.length; i++) { rows[i].style.backgroundColor = "transparent"; }修正方案2:判断是否有行内背景色
如果一定要判断该行是否通过行内style设置过背景色,可以检查style.backgroundColor的值:for (var i = 0; i < rows.length; i++) { if (rows[i].style.backgroundColor !== "") { rows[i].style.backgroundColor = "transparent"; } }
注意:如果背景色是通过CSS类设置的,
style.backgroundColor会是空值,这时候直接设置style.backgroundColor = "transparent"依然能覆盖类样式的效果。
内容的提问来源于stack exchange,提问作者Arvia
相关产品推荐
相关产品推荐

