【问题标题】:How to change event execution order?如何更改事件执行顺序?
【发布时间】:2016-11-26 16:21:52
【问题描述】:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Close window</title>
</head>
<body>
<button id="abc" onclick="temp1()">button</button>
<script type="text/javascript">
function temp1() {
alert("temp1");
};
function temp2() {
alert("temp2");
}
document.getElementById("abc").addEventListener("click", temp2, false);
</script>
</body>
</html>
但我想先显示“temp2”,然后显示“temp1”
这可能吗?还是事件执行顺序取决于浏览器所以我无法更改?
谢谢你的帮助!!
【问题讨论】:
-
-
@Marielitos 我觉得我的问题太简单了,所以我再问一个问题here,如果你知道答案请帮助我,谢谢
标签:
javascript
html
event-handling
dom-events
【解决方案1】:
您可以通过以下几种方式保证此处的订单:
document.getElementById("abc").addEvenListener("click", function() {
temp2();
temp1();
}, false);
另一种选择是:
function temp2() {
alert();
temp1(); // call temp1 at the end of temp2
}
document.getElementById("abc").addEventListener("click", temp2, false);
【讨论】:
-
我觉得我的问题太简单了,所以我再问一个问题here,如果你知道答案请帮助我,谢谢
【解决方案2】:
请查看此:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Close window</title>
</head>
<body>
<!-- here is your first AddEventlistener-->
<button id="abc" onclick="temp1()">button</button>
<script type="text/javascript">
function temp1() {
alert("temp1");
};
function temp2() {
alert("temp2");
}
/*then here is your second AddEventlistener*/
var d = document.getElementById("abc");
d.addEventListener("click", temp2, false);
/*javascript will execute it in order
if you want to change the order. remove first EventListener then register new one after. something like this:
*/
//remove listener
d.onclick = null;
//register new
d.addEventListener('click', temp1);
</script>
</body>
</html>