javascript - cela pointe dans la fonction événement
欧阳克
欧阳克 2017-06-26 10:52:55
0
6
724

<!DOCTYPE HTML>
<html lang="en-US">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    
    <h2 onmousedown = "f1(this)">事件中的this</h2>

    <script type="text/javascript">
        
        var h2 = document.getElementsByTagName('h2')[0];
        
        //HTML方式绑定
        function f1(obj){
            console.log(obj);
        }
        f1( this );
        
        /*
        //DOM 0级绑定方式
        h2.onclick = function(){
            console.log(this);
        }
        
        //DOM 2级方式
        h2.addEventListener('mouseover',function(){
            console.log(this);
        });
        */
    </script>
    

</body>
</html>
欧阳克
欧阳克

温故而知新,可以为师矣。 博客:www.ouyangke.com

répondre à tous(6)
为情所困

Cela en JavaScript n'a rien à voir avec l'endroit où la fonction est définie, mais avec qui l'appelle.

小葫芦

h2 est lié à l'événement, donc cela pointe vers cet élément. Vous pouvez simplement le comprendre comme

.

var dom = document.getElementsByTagName('h2')
dom.onmousedown = function(){
    f1(this)
}
代言

http://www.cnblogs.com/soulii...Regarde ça

漂亮男人

Le premier équivaut à `Veuillez entrer le code

var h2 = document.querySelectorAll("h2")[0];
function fn(){
    console.log(this);
}
h2.onmousedown = fn;
window.fn();

Cela pointe vers l'objet qui l'appelle. Les variables et fonctions que vous définissez dans l'environnement global sont par défaut les propriétés et méthodes de l'objet window, donc lorsque vous exécutez fn() dans l'environnement global, cela pointe vers window

代言

Le dom que vous obtenez correspond à celui-ci.

洪涛

Ces deux ne sont pas la même chose.

<h2 onmousedown="f1(this)"></h2>
h2.onmouseover=f1()
h2.addEventListern(f1)

Ces trois méthodes lient toutes une fonction de rappel nommée f1 à h2 lorsque l'événement de survol se produit. La fonction de rappel liée à l'événement pointe vers l'élément DOM lui-même.

dans votre question
//HTML方式绑定
function f1(obj){
  console.log(obj);
}
f1( this );

Ce programme s'exécute sous la portée de la fenêtre, donc cela pointe naturellement vers la fenêtre. Ce code n'a rien à voir avec h2 (non lié).

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal