根据条件改变细胞颜色

时间:2013-01-25 21:40:07

标签: javascript

我的条件是根据比较值更改表格行的背景颜色。我想整合另一个比较两个单元格的条件,并仅在那些单元格上返回背景颜色。

我已经在桌面上运行了一个循环

            for (i = 0; i < rows.length; i++) {
            cells = rows[i].getElementsByTagName('td');

这就是我所拥有的,但它将颜色结果应用于整个列而不是每个单元格。

         if (cells[10].innertext !== cells[11].innerText)
                cells[10].style.backgroundColor = "red";
                cells[11].style.backgroundColor = "red";

         else 
            (cells[10].innertext == cells[11].innerText)
                cells[10].style.backgroundColor = "green";
                cells[11].style.backgroundColor = "green";

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您有大写问题。第一个innertext应为innerText。并且必须在块中放置多个语句以将它们分组以用于条件。

另外,要在else之后设置一个条件,它必须是else if

        //-------------v
     if (cells[10].innertext !== cells[11].innerText) {
            cells[10].style.backgroundColor = "red";
            cells[11].style.backgroundColor = "red";
        //-------------v
     } else if (cells[10].innertext == cells[11].innerText) {
            cells[10].style.backgroundColor = "green";
            cells[11].style.backgroundColor = "green";
     }

虽然逻辑上不需要第二个条件,但您可以将其更改为:

     } else {

此外,.textContent是从元素获取文本的标准版本。如果您想要更广泛的浏览器支持,您应该执行以下操作:

var text1 = cells[10].textContent || cells[10].innerText
var text2 = cells[11].textContent || cells[11].innerText

...然后使用变量进行比较。


最后,没有必要如此冗长:

cells = rows[i].getElementsByTagName('td');

你可以改用:

rows[i].cells

答案 1 :(得分:-1)

你看过Knockout.js了吗?它允许您将值绑定到网格,然后订阅发生在它们上的事件。