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