javascript - onBlur 杀死 onClick 但如果使用 setTimeout 则不会

标签 javascript onclick settimeout onblur

如果将光标放在第一个输入中,然后单击按钮,您会收到一条消息。

如果将光标放在第二条消息上(使用 setTimeout),您会收到两条消息。

为什么在第一个场景中不显示“单击按钮”消息?

相反,setTimeout 是什么让第二个同时显示这两个警报?

<html>
<head>
  <script type='text/javascript'>
    function testOne() {
      alert('button was clicked');
    }
    function testTwo() {
      alert ('focus left the input');
    }
  </script>
</head>
<body>
  <input name="input1" onblur="testTwo()" />
  <input name="input2" onblur="setTimeout(function(){testTwo();}, 100)" />
  <button name="button1" onclick="testOne()">Button</button>
</body>
</html>

最佳答案

你认为正在发生的事情,实际上并没有发生。

尝试使用 console.log (不会阻塞)而不是 alert (会阻塞),您将看到两个事件处理程序都在运行。万岁,又一个鄙视 alert 调试的理由。

http://jsfiddle.net/mattball/j4cuG/

关于javascript - onBlur 杀死 onClick 但如果使用 setTimeout 则不会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6391997/

相关文章:

javascript - async 关键字/Promise 等效项

javascript - 首次调用 setInterval 的时间安排与其他调用不同

javascript - 访问先前存储的访客级自定义变量

javascript - 为什么索引是来自渲染列表的类,在React Hooks中使用map函数?

javascript - 表单提交重定向到新网址

Javascript 在具有类的元素上切换类

javascript - 隐藏 20 :00 to 08:00 GMT 中的 HTML 元素

javascript - 想要检查用户是否已经存在 MongoDB

java - butterknife @OnClick 不工作

android - 弹出窗口中的 ListView