如何在HTML中使用<button>在两个CSS文档之间切换

时间:2019-04-11 12:43:13

标签: javascript html css

我正在尝试在网页上使用深色主题和浅色主题,但是我找不到一种仅用一个按钮即可切换它们的方法(因此,第一次单击该按钮可以打开深色主题,而第二次点击它关了)。我希望能够不使用第三方JavaScript库就能做到这一点。我找到了一种使用<option>元素的方法,但这不是我想要的“切换按钮”:

  <button onclick=getTheme() id=themeToggle>Click to use this theme.</button>
    <select id="select">
        <option>Dark Theme</option>
        <option>Revert To Original</option>
    </select>

function getTheme () {
    function changeTheme (Theme) {
        document.getElementById('style').setAttribute('href', Theme);
    }
    var index = document.getElementById("select").selectedIndex;
    switch (index) {
        case 0:
          changeTheme('css/dark.css');
          break;
          case 1: changeTheme('css/main.css');
    }
}

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

我知道这似乎有些业余,但是您可以执行以下操作

<button onclick=getTheme() id=themeToggle>Click to use this theme.</button>
<script>
var click = 0;
function getTheme()
{   
    click++;
    if(click%2 == 0)
        changeTheme('css/dark.css');
    else
        changeTheme('css/main.css');
}
</script>

并相应地更改按钮上的文本。让我知道它是否有效。

答案 1 :(得分:2)

另一种方法是使用布尔值。您可以在每次点击时更改布尔值。您可以使用此布尔值切换CSS。

<button onclick=getTheme()>Click to use this theme.</button>

Js

var bool = true;
function getTheme() { 
  function changeTheme (theme) {
    document.getElementById('style').setAttribute('href', theme);
  }  

  bool = !bool;
  var theme = bool ? 'css/dark.css' : 'css/main.css';
  changeTheme(theme);
}

根据评论进行编辑

  

这确实可以很好地工作,但是,有一种方法可以使用document.getElementById(“ themeToggle”)。innerHTML =“ New text!”;使用此按钮可以在“深色主题”或“浅色主题”之间更改按钮

您可以使用相同的逻辑,例如:

var bool = true;
function getTheme() { 
  function changeTheme (theme, text) {
    document.getElementById('style').setAttribute('href', theme);
    document.getElementById('themeToggle').innerText = text;
  }  

  bool = !bool;
  var theme = bool ? 'css/dark.css' : 'css/main.css';
  var text  = bool ? 'Dark theme' : 'Light theme';
  changeTheme(theme, text);
}

答案 2 :(得分:0)

一种简单的方法是:

HTML

<input type="button" value="Dark" id="button" onclick=getTheme()></input> 

JavaScript

function getTheme () {
  var button = document.getElementById("button");
    if(button.value === "Dark") {
      button.value = "Revert To Original";
    } else {
      button.value = "Dark";
    }
}

在if / else内部,您可以放置​​更改主题功能。

https://codepen.io/anon/pen/xedzVz?editors=1111