【问题标题】:Why does the function start before the button is pressed?为什么该功能在按下按钮之前启动?
【发布时间】:2019-05-08 16:30:33
【问题描述】:

我尝试在按下按钮后向下移动一个方块。 为什么在按下按钮之前执行该功能?我该怎么办?

我尝试使用 .onclick 和 .addEventListener 方法。


    <div class="block" id="blockColor"></div>
    <button id="btn">Move</button>

    var pixel=0;
    function theLoop( i ){
      setTimeout( function() {
        document.getElementById("blockColor").style.top = pixel+"px";
        pixel++;
        if ( --i ){
          theLoop(i);
        } 
      }, 50)
    }
    document.getElementById("btn").addEventListener( "click", theLoop(50))

我希望按下按钮后方块会向下移动,但现在它会向下移动而不点击。

【问题讨论】:

    标签: javascript onclick


    【解决方案1】:

    我认为您应该只引用该函数而不是调用它。

    document.getElementById("btn").addEventListener("click", theLoop)
    

    希望对你有帮助。

    -- 编辑-- 如果您仍然需要参数,请像这样包装 theLoop 函数:

    document.getElementById("btn").addEventListener("click", () => theLoop( 50 ) )
    

    【讨论】:

    • 这是对的。每当您在 Javascript 中的函数名称后加上 parens () 时,这就是立即调用函数并返回结果的表示法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多