单击按钮时更改按钮的背景颜色[重复]

Posted

技术标签:

【中文标题】单击按钮时更改按钮的背景颜色[重复]【英文标题】:Changing a button's background color when it's clicked [duplicate] 【发布时间】:2013-06-02 16:44:17 【问题描述】:

我正在尝试使用 javascript 更改按钮的 background-color 属性。该脚本检查当前background-color 的设置,然后切换它。 这是 JavaScript 代码:

function btnColor(btn,color) 
    var property=document.getElementById(btn);
    if (property.style.background-color == "#f47121") 
        property.style.background-color=Color;
    
    else 
        property.style.background-color = "#f47121";
    

这就是我在 html 中传递的内容:

<input type="button" id="btnHousing" value="Housing" onclick="toggleLayer('transparent1');btnColor('btnHousing','#fff200');" />

toggleLayer 是我正在使用的另一个函数,它工作得非常好。 我似乎无法弄清楚为什么它不起作用。

【问题讨论】:

背景减色?你甚至在减法运算符周围有空格! 你调用的是函数btnColor,但是你的函数叫做setColor 【参考方案1】:

为什么不直接使用 jQuery?

核心 Javascript 是如此原始! 如果您只是更改背景颜色,请在 jQuery 中使用 on click 事件:

$('#btnHousing').click(function() 
    //Now just reference this button and change CSS
    $(this).css('background-color','#f47121');
);

就我个人而言,它比原始 javascript 读起来要好得多。

问候

【讨论】:

如果他们只是改变一个按钮背景,没有必要为一个事件加载一个 32kb 的文件。 @Seth 没有人在项目中只编写一个函数。Jquery 是一种扩展,性能要好得多。是的,我同意为一个事件加载文件是矫枉过正的。【参考方案2】:

我在 JsBin 中做了一个工作示例:LINK HERE

我将函数重命名为 setColor 我通过 window.getComputedStyle(property).backgroundColor 更改了属性 property.style.background-color

【讨论】:

它可以工作,但不会切换回您在 html 函数调用中传递的颜色,即“#fff200”。 传递一个 rgb 值。十六进制似乎转换不正确。或者制作你自己的正常工作的 rgbToHex 函数,并将其作为颜色传递。 它似乎也不适用于 rgb 值。我尝试发出警报,但由于某种原因,它每次都会跳过 if 语句并跳转到 else 部分。 有一个工作版本:jsbin.com/ebubop/7/edit我更新了我原来的帖子【参考方案3】:

在你的 javascript 中试试这个函数:

function setColor(btn,color)
    var property=document.getElementById(btn);
    if (property.style.backgroundColor == "#f47121") 
        property.style.backgroundColor = color;
     else 
        property.style.backgroundColor = "#f47121";
    


为避免在 onclick 属性中重复输入的 id,您可以这样做:

HTML:

<input type="button" id="btnHousing" value="Housing" onclick="toggleLayer('transparent1');btnColor(this, '#fff200');" />

JavaScript(注意,变量名称区分大小写,参见 Color => color):

function setColor(btn, color)
    if (btn.style.backgroundColor == "#f47121") 
        btn.style.backgroundColor = color;
     else 
        btn.style.backgroundColor = "#f47121";
    

【讨论】:

【参考方案4】:

把你的代码改成这个...

function btnColor(btn, color) 
    var property = document.getElementById(btn);
    if (property.style.backgroundColor == "#f47121") 
        property.style.backgroundColor = Color;
     else 
        property.style.backgroundColor = "#f47121";
    

连字符的 css 属性在 JS 中是驼峰式的。 例如background-color 变为 -> backgroundColor

上面的代码应该可以工作。

【讨论】:

用 ['backgroundColor'] 和 ['background-color'] 试过这个。没用! background-color 无论如何都不起作用。您确定在输入字段中正确命名了函数调用吗?我看到您之前对其进行了编辑,因为名称与函数声明冲突。 document.getElementById(element).style.backgroundColor = color 是您设置背景颜色、替换元素和颜色或传入变量的方式。仔细检查 function btnColoronclick="toggleLayer('transparent1');btnColor(this, '#fff200');" 是否使用相同的函数名称。 确保函数调用相同,并且使用了 backgroundColor。仍然不起作用。

以上是关于单击按钮时更改按钮的背景颜色[重复]的主要内容,如果未能解决你的问题,请参考以下文章

单击按钮时随机更改背景颜色?

每次单击按钮时,是不是可以更改背景颜色并以纯 javascript 变回原始颜色?

单击按钮并更改另一个按钮的背景颜色

AlertDialog 更改片段中的背景颜色 [重复]

在按钮单击时更改 div 的背景颜色

使按钮的背景颜色在单击后更改并保持不变