cari

Rumah  >  Soal Jawab  >  teks badan

javascript - Perbezaan antara menulis ask() secara langsung dan memanggilnya apabila mengklik pada acara 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?');
        }
    }
}

Boleh dijalankan dengan jayanya

Tetapi menulisnya dalam bentuk berikut tidak berfungsi dengan betul. Pengembalian palsu tidak ditangkap.

Fungsinya adalah seperti berikut:

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?');
}

Ditulis dalam bentuk berikut boleh berjalan dengan betul:

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?');
}

Sila beritahu saya perbezaan antara tiga kaedah penulisan

世界只因有你世界只因有你2858 hari yang lalu576

membalas semua(2)saya akan balas

  • 滿天的星座

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

    Pertama sekali, penyoal mesti tahu bahawa confirm('are you sure?') dan klik Confirm akan mengembalikan true, klik kembali code> akan mengembalikan false;confirm('are you sure?')确定会返回true,点返回会返回false;

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

    另外

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

      Kemudian saya katakan bahawa tidak ada perbezaan yang ketara antara tiga cara penulisan, ia hanya menukar nilai pulangan:
      1 Anda tahu
      2 >3. Cara terbaik untuk menulis
    • Selain itu

    • Pastikan penyoal sedang mengkaji pengikatan acara Jika anda ingin mengikat acara kepada sekumpulan elemen biasa, seperti senarai li, cara terbaik ialah memanggil delegasi acara:

    • .
      <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 = "";
          }
        }
      }
    • Sebaik sahaja anda memahami mekanisme acara js, menangkap dan menggelegak, anda akan hampir sampai.
    🎜🎜Keserasian akhir dengan IE: attachEvent, standard: addEventListener🎜🎜 🎜

    balas
    0
  • 習慣沉默

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

    Pilihan kedua ialah anda tiada pulangan

    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?');
    }

    balas
    0
  • Batalbalas