2016-11-26 12 views
1

Как изменить порядок выполнения событий?

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
\t <meta charset="utf-8"> 
 
\t <title>Close window</title> 
 
</head> 
 
<body> 
 
\t <button id="abc" onclick="temp1()">button</button> 
 

 
<script type="text/javascript"> 
 
\t function temp1() { 
 
\t \t alert("temp1"); 
 
\t }; 
 

 
\t function temp2() { 
 
\t \t alert("temp2"); 
 
\t } 
 

 
\t document.getElementById("abc").addEventListener("click", temp2, false); 
 
</script> 
 
</body> 
 
</html>

, но я хочу, чтобы показать "temp2" первый, а затем показать "temp1"

Возможно ли это? или порядок выполнения событий зависит от браузера, поэтому я не могу его изменить?

спасибо за помощь !!

+0

Почему вы не пишете уникальную функцию? – Marielitos

+0

@Marielitos Я думаю, что я слишком упрощаю свой вопрос, поэтому задаю еще один вопрос [здесь] (http://stackoverflow.com/questions/40821567/how-to-set-the-event-to-be-triggered-first) , если вы знаете ответ plz, помогающий мне поблагодарить – chenyuxian

ответ

0

Пожалуйста, ознакомьтесь с одним:

<!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>

+0

спасибо, я думаю, что ваш ответ близок, но я думаю, что я слишком упрощаю свой вопрос, поэтому задаю другой вопрос [здесь] (http: // stackoverflow.com/questions/40821567/how-to-set-the-event-to-be-triggered-first), если вы знаете ответ plz, помогающий мне поблагодарить – chenyuxian

+0

Вы не можете рассчитывать на порядок для старых браузеров. Уровень DOM 2 указывал, что спецификация заказа не указана. Однако, с уровнем DOM 3, вы можете рассчитывать на заказ. См. Https://stackoverflow.com/questions/2706109/are-event-handlers-in-javascript-called-in-order –

0

Есть несколько способов, которыми вы можете гарантировать порядок здесь:

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); 
+0

, я думаю, что я слишком упрощаю свой вопрос, поэтому задаю еще один вопрос [здесь] (http://stackoverflow.com/questions/40821567/how-to-set-the-event- если вы знаете ответ plz, помогающий мне поблагодарить – chenyuxian