gpt4 book ai didi

javascript - JavaScript 中的 HTML 复选框开/关检测

转载 作者:行者123 更新时间:2023-12-03 01:13:06 25 4
gpt4 key购买 nike

我已经进行了太阳系模拟,并有一些用户可以更改的“设置”。我已经做到了,因此设置仅在按下保存按钮时更新。这是可行的,如果选中一个框,则 body 会被隐藏,但例如,我检查了水星并保存了更改,然后在保存更改时也想检查金星,金星被隐藏,但水星再次显示。我怎样才能让水星保持隐藏状态,直到盒子未被阻止。

(请注意,复选框决定是否应隐藏行星,因此 hideMer 例如,当 true 时将停止将 Mercurial 绘制到 Canvas 上)

我认为该问题适用的代码:

function animate() {
//clears canvas each new loop
if (showPath==false){
c.clearRect(-innerWidth/2,-innerHeight/2,innerWidth,innerHeight);
}

hideBodies = [hideMer, hideVen, hideEar, hideMar, hideJup, hideSat, hideUra, hideNep];
drawSun();

for (var i=0; i< xPosList.length; i++){
leapfrog(i);
if (hideBodies[i]==false){
drawBody(i);
}
}

}

function saveChanges() {
showPath=(document.getElementById("showPath").value=="True");
//Mercury
if (document.getElementById("mer").checked && hideMer == false){
hideMer = true;
} else if (document.getElementById("mer").checked && hideMer == true){
hideMer = false;
}
//Venus
if (document.getElementById("ven").checked && hideVen == false){
hideVen = true;
} else if (document.getElementById("ven").checked && hideVen == true){
hideVen = false;
}
//Earth
if (document.getElementById("ear").checked && hideEar == false){
hideEar = true;
} else if (document.getElementById("ear").checked && hideEar == true){
hideEar = false;
}
//Mars
if (document.getElementById("mar").checked && hideMar == false){
hideMar = true;
} else if (document.getElementById("mar").checked && hideMar == true){
hideMar = false;
}
//Jupiter
if (document.getElementById("jup").checked && hideJup == false){
hideJup = true;
} else if (document.getElementById("jup").checked && hideJup == true){
hideJup = false;
}
//Saturn
if (document.getElementById("sat").checked && hideSat == false){
hideSat = true;
} else if (document.getElementById("sat").checked && hideSat == true){
hideSat = false;
}
//Uranus
if (document.getElementById("ura").checked && hideUra == false){
hideUra = true;
} else if (document.getElementById("ura").checked && hideUra == true){
hideUra = false;
}
//Neptune
if (document.getElementById("nep").checked && hideNep == false){
hideNep = true;
} else if (document.getElementById("nep").checked && hideNep == true){
hideNep = false;
}

console.log(hideMer);
alert(hideMer);
}

完整代码:https://jsfiddle.net/nczpod06/6/

最佳答案

在保存每个行星的更改的功能中,我仅在选中时更改 bool 值,而不是在未选中时更改 bool 值。为了解决这个问题(例如对于 Mercurial ),我需要添加非 bool 逻辑运算符,然后它就可以工作......例如:

//Mercury
if (document.getElementById("mer").checked && hideMer == false){
hideMer = true;
} else if (!(document.getElementById("mer").checked) && hideMer == true){
hideMer = false;
}

关于javascript - JavaScript 中的 HTML 复选框开/关检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52135910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com