JavaScript if语句无法读取条件,点击切换暗黑模式失效求助
问题原因
你的if-else判断逻辑写在全局作用域里,页面加载完成后只会执行一次——此时x初始值是0,所以会把背景设为#0A0A0A,但之后点击div修改x的值时,这段判断代码不会再被触发,自然不会更新背景色。
修复代码
把判断逻辑移到点击事件的回调函数内部,这样每次点击都会根据最新的x值执行切换:
let x = 0; document.getElementById("darkmode").onmousedown = function darkMode(){ x += 1; console.log(x); // 把判断移到这里 if(x % 2 == 0){ document.body.style.backgroundColor = "#0A0A0A"; } else { document.body.style.backgroundColor = "white"; } }
更简洁的优化方案
其实不需要用计数变量,直接用一个布尔值来记录暗黑模式的状态,切换起来更直观:
let isDarkMode = false; document.getElementById("darkmode").onmousedown = function darkMode(){ isDarkMode = !isDarkMode; // 每次点击取反状态 document.body.style.backgroundColor = isDarkMode ? "#0A0A0A" : "white"; }
内容的提问来源于stack exchange,提问作者Zuhayr Elias
相关产品推荐
相关产品推荐

