2

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

如果您将光标放在第二个(带有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>
4

1 回答 1

4

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

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

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

于 2011-06-17T21:27:34.860 回答