javascript-用于提交事件的addEventListener尽早运行处理程序功能

我试图找出如何在用户按下表单上的提交按钮几秒钟后运行一段代码.我的测试页正在等待适当的时间并正确执行代码块,但是似乎没有等待Submit事件,而是在页面加载时启动了我的计时器.好像我没有以正确的方式使用.addEventListener;有人看到我的问题吗?我使用的是最新版本的Firefox,而不是IE6或类似的名称.

<html>
<head>
    <title>Listener Test</title>    
</head>
<body>
    <form id="travelInfo">
        Depart: <input type="text" name="depart" value="BWI" id="depart"><br />
        Arrive: <input type="text" name="arrive" value="LAX " id="arrive"><br />
        <input type="submit" name="submit" value="Send Form" id="Submit">
    </form>

    <script type="text/javascript">
        window.addEventListener('submit', timeFunction(), true);
        function timeFunction()
        {
            var t=setTimeout("handler()",3000);
        }
        function handler()
        {
            alert("Hello");
        }       
    </script>
</body>
</html>

解决方法:

更换

window.addEventListener('submit', timeFunction(), true);

window.addEventListener('submit', timeFunction, true);

在我的other answer中可以看到调用函数和引用它之间的区别.

另外,不要做

setTimeout("handler()", 3000);

基本上会在发生超时时进行评估,您可以将对处理函数的引用直接传递给setTimeout.注意没有引号和括号.

setTimeout(handler, 3000);
上一篇:javascript-如何使用事件侦听器将类切换到单个列表项


下一篇:javascript-多个元素的AddEventListener不适用于“焦点”事件