Javascript 更改按钮';当它';s咔嗒一声

Javascript 更改按钮';当它';s咔嗒一声,javascript,html,background-color,Javascript,Html,Background Color,我正在尝试使用JavaScript更改按钮的背景色属性。脚本检查当前背景颜色设置为什么,然后进行切换。 这是JavaScript代码: function btnColor(btn,color) { var property=document.getElementById(btn); if (property.style.background-color == "#f47121") { property.style.background-color=Color;

我正在尝试使用JavaScript更改按钮的
背景色
属性。脚本检查当前背景颜色设置为什么,然后进行切换。 这是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
是我正在使用的另一个函数,它工作得非常好。
我似乎不明白为什么它不起作用

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

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

    • 为什么不直接使用jQuery

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

      $('#btnHousing').click(function() {
          //Now just reference this button and change CSS
          $(this).css('background-color','#f47121');
      });
      
      就我个人而言,它读起来比原始javascript要好得多


      关于

      将您的代码更改为此

      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中以驼峰式大小写。 例如,
      backgroundColor
      变成->
      backgroundColor


      上述代码应该可以工作。

      在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');" />
      

      背景减去颜色?你甚至在减法运算符周围有空格!您正在调用函数btnColor,但您的函数名为SetColor如果他们只是更改按钮背景,则无需为一个事件加载32kb的文件。@Seth没有人在项目中只编写一个函数。.Jquery是一个扩展,性能更好。是的,我同意在文件中加载一个事件是过分的。尝试了这个,使用了['backgroundColor']和['background-color']。不行!背景色无论如何都不起作用。您确定在输入字段中正确命名了函数调用吗?我看到您之前编辑了它,因为名称与函数声明冲突
      document.getElementById(element).style.backgroundColor=color
      是设置背景色、替换元素和颜色或传递变量的方式。仔细检查是否有
      功能btnColor
      onclick=“toggleLayer('transparent1');btnColor(这个,#fff200');”
      使用相同的函数名。确保函数调用相同且使用了backgroundColor。仍然不起作用。它起作用,但不会切换回html函数调用中传递的颜色,即“fff200”。传递rgb值。十六进制似乎转换不正确。或者制作自己的rgbToHex函数,并将其作为颜色传递。它似乎也不适用于rgb值。我试着发出提醒,但出于某种原因,它每次都会跳过if语句,跳转到else部分
      function setColor(btn, color){
          if (btn.style.backgroundColor == "#f47121") {
              btn.style.backgroundColor = color;
          } else {
              btn.style.backgroundColor = "#f47121";
          }
      }