[英]for loop javascript inside if statement
有没有办法在循环中执行 !radios[0].checked && !radios[1].checked && !radios[2].checked 并在某个时候保持 if 条件不变? 我的代码是:
function afterLogin(event){ event.preventDefault(); if((!radios[0].checked && !radios[1].checked && !radios[2].checked) || userName.value === "" || numOfQuestions.value === ""){ skillMsg.innerHTML = "Please check one of the skills before login"; isTrue = false; }else{ title[0].innerHTML = "Welcome " + userName.value; loginForm.style.display = "none"; calForm.style.display = "block"; formsColor.style.backgroundColor = color.value; startTheGame(); isTrue = true; } }
这就是我试图做的:
function afterLogin(event){ event.preventDefault(); for(let i = 0; i < radios.length; i++){ if(!radios[i].checked || userName.value === "" || numOfQuestions.value === ""){ //change the plase here skillMsg.innerHTML = "Please check one of the skills before login"; return false; }else{ title[0].innerHTML = "Welcome " + userName.value; loginForm.style.display = "none"; calForm.style.display = "block"; formsColor.style.backgroundColor = color.value; //return true; startTheGame(); //return true; } } }
尝试这个 ? 您可以使用可用的Array.every
方法。 供参考: https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every
function afterLogin(event){
event.preventDefault();
if((!radios.every(radio => radio.checked) || userName.value === "" || numOfQuestions.value === ""){
skillMsg.innerHTML = "Please check one of the skills before login";
isTrue = false;
}else{
title[0].innerHTML = "Welcome " + userName.value;
loginForm.style.display = "none";
calForm.style.display = "block";
formsColor.style.backgroundColor = color.value;
startTheGame();
isTrue = true;
}
}
是的,有可能,创建一个不同的验证函数来进行完整性检查,或者在同一个函数中进行
function afterLogin(event){
event.preventDefault();
let notChecked = false;
for(let i = 0; i < radios.length; i++){
if(!radios[i].checked){
notChecked = true;
break;
}
}
if(notChecked || userName.value === "" || numOfQuestions.value === ""){
skillMsg.innerHTML = "Please check one of the skills before login";
isTrue = false;
}else{
title[0].innerHTML = "Welcome " + userName.value;
loginForm.style.display = "none";
calForm.style.display = "block";
formsColor.style.backgroundColor = color.value;
startTheGame();
isTrue = true;
}
}
是的,您可以使用 every() 函数来检查这一点。
var radios = [{checked: false}, {checked: false}, {checked: false}, {checked: false}];
if(radios.every(checkValue) || userName.value === "" || numOfQuestions.value === "") {
// your code
}
function checkValue({checked}) {
return checked === false;
}
还尝试使用干净的代码原则。 就像尝试使用 Fail first 方法一样,使用 if 和 return 这样你就不必在那里使用 else 块。 只需将 else 部分放在 if 块之外。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.