Javascript 为什么for循环只对第一个元素起作用?

Javascript 为什么for循环只对第一个元素起作用?,javascript,Javascript,我偶然发现了一个我不知道如何解决的问题。我希望能够在选中单选按钮时进行检查。如果选中五个按钮中的一个,则应给出反馈。用我的代码,当我检查第一个单选按钮时,它工作了。但是如果我查第二个或第三个。。。它给了我一个警告信息:请给一个等级。这意味着要么函数radioChecker中的for循环未按预期工作,要么我不知道 { let validation = document.querySelector('.type__style'); let validation2 = document.getElem

我偶然发现了一个我不知道如何解决的问题。我希望能够在选中单选按钮时进行检查。如果选中五个按钮中的一个,则应给出反馈。用我的代码,当我检查第一个单选按钮时,它工作了。但是如果我查第二个或第三个。。。它给了我一个警告信息:请给一个等级。这意味着要么函数radioChecker中的for循环未按预期工作,要么我不知道

{
let validation = document.querySelector('.type__style');
let validation2 = document.getElementById("label__text");

const init = () => {
    const $button = document.getElementById('send__button');
    $button.onclick = () => {
        revealText();
        setTimeout(dissapearText, 4000);

    }

const radioChecker = () => {
    let radios = document.querySelector(".stars").querySelectorAll("input");
    for (let i = 0; i <radios.length; i++) {
        if (radios[i].checked) {
            console.log("yes");
            return true;
        } else {
            return false;
        }
    }
}

    const revealText = () => {


        if (validation.value === "") {
            validation.focus();
            window.alert("Please enter your name.");
            return false;
        } else if (validation2.value === "") {
            validation2.focus();
            window.alert("Please fill in commentary.");
            return false;
        } else if (radioChecker() === false) {
            window.alert("Please give a rating.");
            return false;

        } else {
            document.querySelector('.feedback').style.opacity = 1;
            console.log('work');
            return true;
        }

    }

    const dissapearText = () => {
        document.querySelector('.feedback').style.opacity = 0;
    }




}
init();
{
让验证=document.querySelector('.type__样式');
让validation2=document.getElementById(“标签文本”);
常量init=()=>{
const$button=document.getElementById(“发送按钮”);
$button.onclick=()=>{
revealText();
设置超时(dissapearText,4000);
}
常数无线电检测器=()=>{
让收音机=document.querySelector(“.stars”).queryselectoral(“输入”);
for(设i=0;i{
如果(validation.value==“”){
validation.focus();
window.alert(“请输入您的姓名”);
返回false;
}else if(validation2.value==“”){
validation2.focus();
窗口提示(“请填写注释”);
返回false;
}else if(radioChecker()==false){
window.alert(“请给出评级”);
返回false;
}否则{
document.querySelector('.feedback').style.opacity=1;
console.log(“工作”);
返回true;
}
}
const dissapertext=()=>{
document.querySelector('.feedback').style.opacity=0;
}
}
init();

}这是因为循环中有一个
返回true
。当它在第一个循环中返回true时,它将中断循环。

const radioChecker=()=>{
const radioChecker = () => {
    let radios = document.querySelector(".stars").querySelectorAll("input");
    for (let i = 0; i <radios.length; i++) {
        if (radios[i].checked) {
            console.log("yes");
            return true;
        }
    }
    return false;
}
让收音机=document.querySelector(“.stars”).queryselectoral(“输入”);
对于(假设i=0;i如果
return
ing每个循环,它将永远不会经过第一次迭代。因为您在第一次迭代中立即从函数中
return
return
语句是立即退出函数的指令。从循环中删除
else
条件并添加
return f。)还有,如果我还是js新手的话,我还是会犯一些愚蠢的错误。我删除了返回值true,但它仍然不能正常工作。没问题,嘿,我们都有过类似的问题