recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - La différence entre écrire directement Ask() et l'appeler en cliquant sur l'événement onclick

window.onload=init;
function init(){
    var x=document.getElementsByTagName('a');
    for(var i in x){
        x[i].onclick=function(){
            return confirm('are you sure?');
        }
    }
}

Peut être exécuté avec succès

Mais l'écrire sous la forme suivante ne fonctionne pas correctement. Le retour false n'est pas capturé lorsque vous cliquez sur Annuler, le lien saute toujours. Pourquoi cela ?

La fonction est la suivante :

window.onload=init;
function init(){
    var x=document.getElementsByTagName('a');
    for(var i in x){
        x[i].onclick=function(){
        ask();
        }
    }
}
function ask(){
    return confirm('are you sure?');
}

Écrit sous la forme suivante peut fonctionner correctement :

window.onload=init;
function init(){
    var x=document.getElementsByTagName('a');
    for(var i in x){
        x[i].onclick=ask;
    }
}
function ask(){
    return confirm('are you sure?');
}

Veuillez me dire la différence entre les trois méthodes d'écriture

世界只因有你世界只因有你2797 Il y a quelques jours553

répondre à tous(2)je répondrai

  • 滿天的星座

    滿天的星座2017-05-19 10:33:06

    Tout d'abord, la personne qui pose la question doit savoir que confirm('are you sure?') et cliquer sur Confirm renverra true, et cliquer sur < code>return code> renverra false ;confirm('are you sure?')确定会返回true,点返回会返回false;

    然后再说三种写法并没有实质上的区别,只是变着花样返回值而已:
    1.你懂
    2.ask() 改为 return ask();
    3.三种中最好的写法

    另外

    • 看题主在研究事件绑定,如果是给一堆有规则的元素,如列表li绑定事件,最好的办法叫事件委托

      Ensuite, permettez-moi de dire qu'il n'y a pas de différence substantielle entre les trois façons d'écrire, elles changent simplement la valeur de retour :
      1 Vous savez
      2 Ask() est modifié en return Ask();3. Trois. La meilleure façon d'écrire
    • Aussi

    • Vérifiez que la personne qui pose la question étudie la liaison d'événements. Si vous souhaitez lier des événements à un groupe d'éléments réguliers, comme une liste li, le meilleur moyen est d'appeler la délégation d'événements :

    • <ul id="ul">
        <li>aaaaaaaa</li>
        <li>bbbbbbbb</li>
        <li>cccccccc</li>
      </ul>
      window.onload = function(){
        var oUl = document.getElementById("ul");
        var aLi = oUl.getElementsByTagName("li");
      
        for(var i=0; i<aLi.length; i++){
          aLi[i].onmouseover = function(){
            this.style.background = "red";
          }
          aLi[i].onmouseout = function(){
            this.style.background = "";
          }
        }
      }
    • Une fois que vous aurez compris le mécanisme événementiel de js, la capture et le bouillonnement, vous y serez presque.
    🎜🎜Compatibilité finale avec IE : attachEvent, standard : addEventListener🎜🎜 🎜

    répondre
    0
  • 習慣沉默

    習慣沉默2017-05-19 10:33:06

    La deuxième option est que vous n'avez aucun retour

    window.onload=init;
    function init(){
        var x=document.getElementsByTagName('a');
        for(var i in x){
            x[i].onclick=function(){
            return ask();
            }
        }
    }
    function ask(){
        return confirm('are you sure?');
    }

    répondre
    0
  • Annulerrépondre