为了账号安全,请及时绑定邮箱和手机立即绑定

if 语句内的 for 循环 javascript

if 语句内的 for 循环 javascript

慕标琳琳 2023-08-10 16:04:03
有没有办法在循环中执行 !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;                            }                }    }
查看完整描述

3 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

尝试这个 ?您可以使用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;

    }

    

}


查看完整回答
反对 回复 2023-08-10
?
DIEA

TA贡献1820条经验 获得超2个赞

是的,有可能,创建一个不同的验证函数来进行健全性检查,或者在同一个函数本身中进行


    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;

        }  

    }


查看完整回答
反对 回复 2023-08-10
?
波斯汪

TA贡献1811条经验 获得超4个赞

是的,您可以使用 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;

}

还要尝试使用干净的代码原则。就像尝试使用“失败优先”方法一样,使用 if 并返回,这样您就不必在那里使用 else 块。只需将 else 部分放在 if 块之外即可。


查看完整回答
反对 回复 2023-08-10
  • 3 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信