Chrome上添加了多个类,但未添加Edge或IE

时间:2015-12-09 14:24:52

标签: javascript google-chrome internet-explorer

在下面的代码中,我根据布尔值追加一个类两次。在Chrome中它在Edge和IE中完美无缺地工作,只有身体接收backgroundNight类,而foregorund元素不接收foregroundNight类。

Example found here

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");
                }
            }
        }

1 个答案:

答案 0 :(得分:1)

问题来自这一行

var x = document.getElementsByClassName("ForegroundC");

它找到所有具有类ForegroundC的元素,但问题是在HTML中,它是创作foregroundC,因此在Internet Explorer中找不到它,因此类{{1}没有得到应用。

小心使用类名...浏览器有点像操作系统。 Windows没有区分这种情况,但是linux确实......