首页 > 解决方案 > 事件监听器只循环一次

问题描述

E:不知道将数字属性分配给输入框仍会将其作为字符串传递,谢谢您的回复!

我的事件监听器使它只循环通过我的 for 循环一次然后停止。

现在我确信解决方案很简单,但我似乎无法找到问题所在。

如果您只是运行该函数并手动输入值,它就可以正常工作。

startButton.addEventListener("click",function(){
           floorFizz = document.getElementById("floor").value;
           capFizz = document.getElementById("cap").value;
           incrementFizz = document.getElementById("increment").value;
           FizzBuzz(floorFizz,capFizz,incrementFizz);
       });

function FizzBuzz(floor,cap,increment){
    for(let i=floor; i<cap; i+= increment){
        console.log("iteration")
        if(i%3 === 0 && i%5 === 0){
            console.log(i + "=FizzBuzz")
        }
        else if(i%3 === 0){
            console.log(i + "=Fizz")
        }
        else if(i%5 === 0){
            console.log(i + "=Buzz")
        }
        else{
            console.log(i)
        }
    }
}
<button id="startButton">Start</button>
<div id=floor>1</div>
<div id=cap>100</div>
<div id=increment>1</div>

没有错误消息只会通过循环一次。


let floorVal = document.createElement('input');
        floorVal.setAttribute('type','number');
        floorVal.id = "floor";
        floorVal.setAttribute('placeholder','Starting number')
        parent.appendChild(floorVal);


标签: javascriptloopsdom-events

解决方案


将值转换为数字...

floorFizz = Number(document.getElementById("floor").value);
capFizz = Number(document.getElementById("cap").value);
incrementFizz = Number(document.getElementById("increment").value);

推荐阅读