【发布时间】:2020-05-26 07:31:25
【问题描述】:
我希望在 2 个 CSS 表之间切换。我的代码几乎可以工作了 - 但它只切换一次,我不确定实现切换的最佳方式,因此我可以来回切换。
我想用一个按钮在“normal.css”和“highContrast.css”之间切换,并在每次更改时更新按钮的文本。
在我的 HTML 中:
<div class="high">
<button class="normal" id="myButton" value="Hover" onclick="changeClass('css/highContrast.css', 0)" ">High Contrast Mode</button>
</div>
在我的 JS 中:
<script>
function changeClass(cssFile, cssLinkIndex) {
var oldlink = document.getElementsByTagName("link").item(cssLinkIndex);
var newlink = document.createElement("link");
newlink.setAttribute("rel", "stylesheet");
newlink.setAttribute("type", "text/css");
newlink.setAttribute("href", cssFile);
document.getElementsByTagName("head").item(0).replaceChild(newlink, oldlink);
document.getElementsByClassName("normal").setAttribute("text", "Normal mode");
var div = document.getElementById ("myButton");
div.onclick= "changeClass('css/style.css', 0)";
}
</script>
对我来说,最好的方法是在两个 CSS 文件之间切换,而不是仅将 highContrast.css 作为参数传递?我正在考虑使用 for 循环和 % 2....但我确信有一种更清洁的方法。
另外,更新文本的最后一部分也不起作用。我假设我错误地定位了文本,我可以使用 switch 语句修复它以正确更新,但我不确定如何编写它。
【问题讨论】:
-
可能是 if/else 语句?
-
使用单个样式表并切换类会更好更可靠。例如给 body 一个类
highcontrastmode并添加样式表如下:body.highcontrastmode nav { ... }。然后只需使用 JavaScript 从body节点添加/删除类。
标签: javascript html css dom