我在每个电台中都有一个循环。基于选择的无线电,用户为其分数赢得一定数量的分数。一旦该分数是8或更高,我就有一个要显示的显示框。问题是我只希望它显示一次,而不是一个分数大于等于8的单个实例。
for (var i = 0; i < allRadiosArr.length; i++) {
allRadiosArr[i].addEventListener('change', (e)=>{
totalScoreMain = 0;
let checkedRadios = document.querySelectorAll('input[type="radio"]:checked');
checkedRadios.forEach(function(checkedRadio){
totalScoreMain += parseInt(checkedRadio.getAttribute('value'));
});
if (totalScoreMain >= 8) {
referralModalMain.style.display = 'block';
break;
}
});
closeButtonMain.addEventListener('click', (e)=>{
referralModalMain.style.display = 'none';
});
}
答案 0 :(得分:0)
您不必break;
。使用标志,例如let modalShown = false
,然后在第一次显示模态时将其设置为true
,并且不再显示。
let modalShown = false;
for (var i = 0; i < allRadiosArr.length; i++) {
allRadiosArr[i].addEventListener('change', (e)=>{
totalScoreMain = 0;
let checkedRadios = document.querySelectorAll('input[type="radio"]:checked');
checkedRadios.forEach(function(checkedRadio){
totalScoreMain += parseInt(checkedRadio.getAttribute('value'));
});
if (!modalShown && totalScoreMain >= 8) {
referralModalMain.style.display = 'block';
modalShown = true;
}
});
closeButtonMain.addEventListener('click', (e)=>{
referralModalMain.style.display = 'none';
});
}
编辑:请确保您已阅读并理解在问题中收到的所有有用评论,因为它们比我的简单答案更有价值,并且包含重要建议。