簡體   English   中英

if語句中的for循環javascript

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM