【发布时间】:2016-12-07 02:19:22
【问题描述】:
我正在用 JavaScript 玩 setTimeout。我对它是如何工作的感到困惑。我有以下代码:
<input type="button" value='click'>
<script>
var input = document.getElementsByTagName('input')[0]
input.onclick = function() {
setTimeout(function() {
input.value +=' input'
}, 0)
}
document.body.onclick = function() {
input.value += ' body'
}
</script>
当我们单击该函数时,它会将文本正文输入附加到按钮元素。我知道这是因为首先触发了父(主体)事件,并且在下一个计时器滴答声中,子(输入)事件被执行,因为它稍后被推送到事件队列中。
我现在尝试了以下代码:
var input = document.getElementsByTagName('input')[0]
document.body.onclick = function() {
setTimeout(function() {
input.value +=' body'
}, 0)
}
input.onclick = function() {
setTimeout(function() {
input.value +=' input'
}, 0)
}
这会将文本输入主体附加到按钮元素。当两个超时都设置为0时,如何确定这里的执行顺序?在这种情况下,它们按什么顺序推送到事件队列?
【问题讨论】:
-
它们按照预定的顺序执行。
标签: javascript dom-events settimeout