我正在尝试在网页上使用深色主题和浅色主题,但是我找不到一种仅用一个按钮即可切换它们的方法(因此,第一次单击该按钮可以打开深色主题,而第二次点击它关了)。我希望能够不使用第三方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');
}
}
感谢您的帮助!
答案 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内部,您可以放置更改主题功能。