无法通过javascript CSS重置按钮颜色

我可以使用 CSS backgroundImage 线性渐变在 javascript 中更改按钮的颜色,这可行,但当我使用相同的技术尝试重置回原始状态时它不起作用。


我错过了什么?


var darkened=false;


function toggle() {


  if (darkened) {

      console.log("lightening button");

      document.getElementById("scrollbutton").style.backgroundImage = "linear-gradient(rgb(222, 222, 222), rgb(255, 255, 255));";


  } else {


      console.log("darkening button");

      document.getElementById("scrollbutton").style.backgroundImage = "linear-gradient(rgb(99, 99, 99), rgb(166, 166, 166))";

  }


  darkened = ! darkened;


}

<html>

<body>


<button style="background-image: linear-gradient(rgb(222, 222, 222),rgb(255, 255, 255));" id="scrollbutton" onclick="toggle();"> pressme</button>


</body></html>


温温酱
浏览 121回答 2
2回答

德玛西亚99

您不必在执行 css 函数(例如 linear-gradient)后放置分号因为,javascript 假定它是其语句的分号,并在那里结束代码var darkened=false;function toggle() {&nbsp; if (darkened) {&nbsp; &nbsp; &nbsp; console.log("lightening button");&nbsp; &nbsp; &nbsp; document.getElementById("scrollbutton").style.backgroundImage = "linear-gradient(rgb(222, 222, 222), rgb(255, 255, 255))";&nbsp; } else {&nbsp; &nbsp; &nbsp; console.log("darkening button");&nbsp; &nbsp; &nbsp; document.getElementById("scrollbutton").style.backgroundImage = "linear-gradient(rgb(99, 99, 99), rgb(166, 166, 166))";&nbsp; }&nbsp; darkened = ! darkened;}<html><body><button style="background-image: linear-gradient(rgb(222, 222, 222),rgb(255, 255, 255));" id="scrollbutton" onclick="toggle();"> pressme</button></body></html>

繁星淼淼

您可能不需要定义变量并更改内联样式。您可以使用classList.toggle和分离样式并将它们添加到新类中function toggle() {&nbsp; document.getElementById("scrollbutton").classList.toggle('darkening');}.lightening {&nbsp; background-image: linear-gradient(rgb(222, 222, 222), rgb(255, 255, 255));}.darkening {&nbsp; background-image: linear-gradient(rgb(99, 99, 99), rgb(166, 166, 166))}<button class="lightening" id="scrollbutton" onclick="toggle();"> pressme</button>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript