簡體   English   中英

來回改變風格

[英]Change style back and forth

碼:

<style> .demo {color: yellow; background-color: purple} </style>
<p class="demo">my text</p>
<button id="change">click</button>
<script>
window.onload = function () {
var flipColors = query("#change"); 
  var target = query(".demo");
  flipColors.onclick = function() {
    style(target, "color", "white");
    style(target, "background-color", "black");
  };
};
</script>

當我單擊按鈕時,樣式會發生變化。

我的問題是我需要向JS添加什么,當按鈕再次點擊時 - 它將恢復原始樣式,如果再次單擊它將再次激活該功能,而不是制作兩個按鈕。

我知道我可以創建.demo.demo1類並切換它們,但我想了解如何以這種方式實現 - 如果有可能的話。

注意:只是簡單的JS,而不是JQuery等。

是的,toggle()在這里運行得非常好。 我確實創建了兩個切換類,javascript最初只打開一個,然后切換兩個狀態。

 var flipColors = query("#change"); var target = query(".demo"); target.classList.add("demo-on"); toggleClasses = function toggleClasses() { target.classList.toggle("demo-on"); target.classList.toggle('demo-off'); }; 
 .demo-off { color: yellow; background-color: purple; } .demo-on { color: purple; background-color: yellow; } 
 <p class="demo">my text</p> <button id="change" onclick="toggleClasses()">click</button> 

啊,但你不想實際切換類,但css屬性? 輕松完成。 試試這個:

 var theToggle = document.getElementById("change"); var toggleMe = document.getElementsByClassName("demo")[0]; toggleMe.toggleStatus = "on"; theToggle.onclick = function(){ switch(toggleMe.toggleStatus){ case "on": toggleMe.toggleStatus="off"; toggleMe.style.color = "purple"; toggleMe.style.backgroundColor = "yellow"; break; case "off": toggleMe.toggleStatus="on"; toggleMe.style.color = "yellow"; toggleMe.style.backgroundColor = "purple"; break; } } 
 .demo { width: 100px; height: 100px; color: yellow; background-color: purple } 
 <p class="demo">my text</p> <button id="change">click</button> 

這是純粹的js,我添加了一個屬性,我用它來檢查要使用的狀態,但你可以輕松地關閉switch語句,例如,toggleMe.style.color - 希望這會有所幫助!

我認為你正在尋找的這個詞是“Toggle”。 您希望某些內容從“活動”變為“非活動”,並在每次用戶交互時來回切換,即點擊事件。

Javascript有一個用類處理它的函數。 例如,以下代碼行:

target.classList.toggle("active");

將“活動”作為類添加到對象target如果它不存在),並將其刪除(如果它存在)。 以下是有關toggle和其他方法的HTML DOM classList屬性的更多信息。

但是如果你正在尋找一個jQuery解決方案,那么它有一個類似的功能:

$(".class").toggleClass("active"); 

這是.toggleClass() jQuery方法的文檔。

如果您嘗試使用javascript實現切換行為

您可以執行以下代碼段

檢查這個片段

 window.onload = function() { var flipColors = document.querySelector("#change"); var target = document.querySelector(".demo"); flipColors.onclick = function() { toggleStylechanges(target, "color", "white"); toggleStylechanges(target, "backgroundColor", "black"); }; } function toggleStylechanges(element, cssProp, color) { if (element.style[cssProp] == "") element.style[cssProp] = color; else element.style[cssProp] = ""; } 
 .demo { color: yellow; background-color: purple } 
 <p class="demo">my text</p> <button id="change">click</button> 

希望能幫助到你

嘗試這樣的事情:

window.onload = function () {
  var flipColors = query("#change"); 
  var target = query(".demo");
  var clicked = false;
  flipColors.onclick = function() {
    if(clicked) {
      style(target, "color", "yellow");
      style(target, "background-color", "purple");
    } else {
      style(target, "color", "white");
      style(target, "background-color", "black");
    }
    clicked = !clicked;
  };
};

更短的版本:

window.onload = function () {
  var flipColors = query("#change"); 
  var target = query(".demo");
  var clicked = false;
  flipColors.onclick = function() {
    var color = clicked ? "yellow" : "white";
    var bgColor = clicked ? "purple" : "black";
    style(target, "color", color);
    style(target, "background-color", bgColor);
    clicked = !clicked;        
  };
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM