0

我已经回答了我的问题的所有答案,但对我来说,anuthing 似乎不起作用。我想闪烁我的表格行颜色

这是代码:目前它只显示紫色,没有闪烁

$(document).ready(function() {
    openticketPageLoad();
    setInterval(findYellow, 1000);

    function findYellow() {
        $('#divOutputWindow').find('tr').each(function() {
            var $this = $(this);
            if ($this.css("background-color") == "purple") {
                $this.css("background-color", "white")
            } else {
                $this.css("background-color", "purple")
            }
        })
    }
});

HTML是使用jQuery(CSS)+Ajax+CS文件后面的一些代码生成的这是我从“检查元素”中获得的代码

<tr class="ui-state-default2 ui-pgrid-table-row-visible" style="background-color: purple; "><td class="ui-pgrid-table-expander"></td>
            <td class="ui-pgrid-table-cell-sorted"><input name="ctl391" type="checkbox" id="chkTicket_189293" class=" chkTicket" value="189293"></td><td>189293</td><td><input name="ctl392" type="text" id="txtVendorTicket_189293" class=" vendorTicket" onblur="" value=""></td><td>SWCW35216</td><td>FLM</td><td>SDB CISCO</td><td>Open</td><td>CASH HANDLER FATAL ERROR,CASSETTE FAULTED</td><td>04-08-2012 13:36:31</td><td>04-08-2012 14:05:00</td><td>4.52</td><td>System</td>
        </tr>
4

4 回答 4

1

background-color 几乎肯定不会返回值“紫色”,它将返回 rgb 或 hex 值(我相信这取决于浏览器)。因此,您需要针对与“紫色”相关的等效 rgb 或十六进制值进行测试。

因此,您的代码将始终转到 if/else 语句的 else 部分。因此总是产生紫色背景颜色。

于 2012-08-04T12:58:40.753 回答
0

这是因为 $this.css("background-color") 不是字符串,而是 rgb 或 rgba 颜色规范。

改用类:

.purple {
  background-color: purple;
}
.white {
  background-color: white;
}

 $(document).ready(function() {
        openticketPageLoad();
        setInterval(findYellow, 1000);
        function findYellow() {
            $('#divOutputWindow').find('tr').each(function() {
            var $this = $(this);
            $this.toggleClass('purple');
            $this.toggleClass('white', !$this.hasClass('purple'); // toggle to white if it's not purple
            })
        }
    });

看看它在行动:http: //jsfiddle.net/xWRZx/

于 2012-08-04T13:02:49.313 回答
0

.cssgetter 不检索属性,.style它检索getComputedStyle.currentStyle(在 IE 中)。所以它与在元素上设置属性的.css设置器不对称。.style

因此,您永远无法可靠地获得这样的颜色,并且必须使用一些颜色规范化库,因为浏览器之间的值可能会有所不同。

但是,您的用例不需要这个,因为您可以简单地使用 css 类。

于 2012-08-04T13:10:45.737 回答
0

我提出了一个更简单、更语义化的解决方案:

HTML

<div id="divOutputWindow">
    <table>
        <tr>
            <td>foo</td>
            <td>bar</td>
        </tr>
        <tr>
            <td>hello</td>
            <td>world</td>
        </tr>
        <tr>
            <td>lazy</td>
            <td>fox</td>
        </tr>
    </table>
</div>​

CSS

#divOutputWindow tr {
    background-color: white;
}

#divOutputWindow tr.highlighted {
    background-color: purple;
}
​

JS

setInterval(findYellow, 1000);
function findYellow() {
    $('#divOutputWindow').find('tr').each(function() {
        $(this).toggleClass('highlighted');
    });
}​

现场演示

http://jsfiddle.net/Y6NwR/

于 2012-08-05T04:37:13.530 回答