在下面的代码中,我根据布尔值追加一个类两次。在Chrome中它在Edge和IE中完美无缺地工作,只有身体接收backgroundNight
类,而foregorund元素不接收foregroundNight
类。
function toggleMode() {
if (bNightMode) {
bNightMode = false;
document.getElementById("nightmode").src="img/moon-white.png";
document.getElementById("nightmode").style.backgroundColor = "#2c3e50";
//make day mode
var x = document.getElementsByClassName("backgroundC");
var i;
for (i = 0; i < x.length; i++) {
x[i].classList.remove("backgroundNight");
}
var m = document.getElementsByClassName("ForegroundC");
var n;
for (n = 0; n < m.length; n++) {
m[n].classList.remove("foregroundNight");
}
} else {
bNightMode = true;
document.getElementById("nightmode").src="img/moon-black.png";
document.getElementById("nightmode").style.backgroundColor = "#ecf0f1";
//make night mode
var x = document.getElementsByClassName("backgroundC");
var i;
for (i = 0; i < x.length; i++) {
x[i].classList.add("backgroundNight");
}
var x = document.getElementsByClassName("ForegroundC");
var i;
for (i = 0; i < x.length; i++) {
x[i].classList.add("foregroundNight");
}
}
}
答案 0 :(得分:1)
问题来自这一行
var x = document.getElementsByClassName("ForegroundC");
它找到所有具有类ForegroundC
的元素,但问题是在HTML中,它是创作foregroundC
,因此在Internet Explorer中找不到它,因此类{{1}没有得到应用。
小心使用类名...浏览器有点像操作系统。 Windows没有区分这种情况,但是linux确实......