0

我正在尝试使用 javascript 在单击链接按钮时设置标签的背景颜色。
但是,背景会闪烁所需的颜色,然后回退到无背景。下面我有javascript函数以及有问题的控件。
我尝试使用 display='none',display='' 强制重绘,但无济于事。
另外,我尝试通过将标签设置为标准控件来使标签不在服务器上运行。
我还在设置样式的两个区域都设置了中断,并且调用了 LightGreen,但是没有空白,所以不确定背景在哪里被空白,因为在其他任何地方都没有指定。
谢谢,詹姆斯

标签

<asp:Label runat="server" Font-Bold="true" id="lblCustomer">Customer:</asp:Label>

Javascript

function CheckUncheckAll(clientID, listID, check) {
        var chk = clientID.getElementsByTagName("input");
        for (var i = 0; i < chk.length; i++) {
            chk[i].checked = check;
        }
        if (check) {
            document.getElementById(listID.id).style.backgroundColor = "LightGreen";
        }
        else {
            document.getElementById(listID.id).style.backgroundColor = "";
        }
    }

背后的代码

lbCustomerAll.Attributes.Add("onclick", "CheckUncheckAll(" + ckbxlstCustomer.ClientID + ", " + lblCustomer.ClientID + ", true)");
4

3 回答 3

0

如果您执行以下操作怎么办:

function CheckUncheckAll(clientID, listID, check) {
        var evt = document.getElementById(clientID);
        evt.preventDefault();

        var chk = clientID.getElementsByTagName("input");
        for (var i = 0; i < chk.length; i++) {
            chk[i].checked = check;
        }
        if (check) {
            document.getElementById(listID.id).style.backgroundColor = "LightGreen";
        }
        else {
            document.getElementById(listID.id).style.backgroundColor = "";
        }
    }

这将防止触发链接按钮的默认行为。

于 2012-08-27T21:13:43.720 回答
0

checked不是真/假值,它是二进制属性。

element.checked = true; //will fail
element.checked ='checked'; //will work

如果传递的“检查”的值为真/假,则您的代码将不起作用。

PS jQuery 值得学习。您可以在一行代码中完成所有这些操作。

于 2012-08-27T21:13:57.703 回答
0

遇到了同样的问题。偶然地,我意识到问题出在 Button 标签和 onclick 函数的关联上。

如果我将按钮更改为其他任何东西,例如h1,或者如果我将功能更改为onmouseover,它就可以工作。但是,无法弄清楚为什么。

于 2012-10-06T19:09:20.900 回答