use*_*977 11 html javascript global onclick button
我希望Button每次点击它都会改变颜色.但它只会在第一次点击时改变颜色.
我相信问题在于setColor功能.每次我点击时Button,count都会设置为1.所以即使我将其设置为0,它也会在下次点击时重置为1.我该如何解决?javascript/html中是否有全局变量可以轻松解决?
<!DOCTYPE html>
<html>
<head>
<script>
function setColor(btn, color){
    var count=1;
    var property = document.getElementById(btn);
    if (count == 0){
        property.style.backgroundColor = "#FFFFFF"
        count=1;        
    }
    else{
        property.style.backgroundColor = "#7FFF00"
        count=0;
    }
}
</script>
</head>
<body>
<input type="button" id="button" value = "button" style= "color:white" onclick="setColor('button', '#101010')";/>
</body>
</html>
Jul*_*n P 10
javascript中确实存在全局变量.您可以了解有关范围的更多信息,这在这种情况下很有帮助.
您的代码可能如下所示:
<script>
    var count = 1;
    function setColor(btn, color) {
        var property = document.getElementById(btn);
        if (count == 0) {
            property.style.backgroundColor = "#FFFFFF"
            count = 1;        
        }
        else {
            property.style.backgroundColor = "#7FFF00"
            count = 0;
        }
    }
</script>
希望这可以帮助.
1.
function setColor(e) {
  var target = e.target,
      count = +target.dataset.count;
   target.style.backgroundColor = count === 1 ? "#7FFF00" : '#FFFFFF';
   target.dataset.count = count === 1 ? 0 : 1;
   /* 
   () : ? - this is conditional (ternary) operator - equals 
   if (count === 1) {
      target.style.backgroundColor = "#7FFF00";
      target.dataset.count = 0;
   } else {
      target.style.backgroundColor = "#FFFFFF";
      target.dataset.count = 1;
   } 
   target.dataset - return all "data attributes" for current element, 
   in the form of object, 
   and you don't need use global variable in order to save the state 0 or 1
  */ 
}
<input 
  type="button" 
  id="button" 
  value="button" 
  style="color:white" 
  onclick="setColor(event)"; 
  data-count="1" 
/>
2.
function setColor(e) {
   var target = e.target,
       status = e.target.classList.contains('active');
   e.target.classList.add(status ? 'inactive' : 'active');
   e.target.classList.remove(status ? 'active' : 'inactive'); 
}
.active {
  background-color: #7FFF00;  
}
.inactive {
  background-color: #FFFFFF;
}
<input 
  type="button" 
  id="button" 
  value="button" 
  style="color:white" 
  onclick="setColor(event)" 
/>