首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >if语句中的for循环javascript

if语句中的for循环javascript
EN

Stack Overflow用户
提问于 2020-11-17 14:07:18
回答 3查看 51关注 0票数 0

有没有办法做到!radios.checked &&!radios1.检查&&!radios2.在循环中检查并在某些时候保持if条件不变?我的代码是:

代码语言:javascript
复制
    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;
        }
        
    }

这就是我想做的:

代码语言:javascript
复制
    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;
                
            }
        
        }
    }

EN

回答 3

Stack Overflow用户

发布于 2020-11-17 14:14:31

试试这个?您可以使用可用的Array.every方法。参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every

代码语言:javascript
复制
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;
    }
    
}
票数 2
EN

Stack Overflow用户

发布于 2020-11-17 14:15:56

是的,这是可能的,创建一个不同的验证函数来执行健全性检查,或者在相同的函数中执行

代码语言:javascript
复制
    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;
        }  
    }
票数 0
EN

Stack Overflow用户

发布于 2020-11-17 14:16:35

是的,您可以使用every()函数来检查这一点。

代码语言:javascript
复制
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块之外。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64870124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档