cari

Rumah  >  Soal Jawab  >  teks badan

Kekeliruan yang disebabkan oleh javascript pilih semua fungsi

Muat naik kod terus
Kod adalah seperti berikut, fungsi pilih semua tidak mudah digunakan

     var _select_all = document.getElementById("select_all");
     var _input = document.querySelectorAll("#shop_content ul input[type=checkbox]");
    _select_all.addEventListener("click",function() {
        
                            
            for(var i = 0;i<_input.length;i++) {
                 _input[i].checked="checked";
        }
     })

Tukar ayat

var _select_all = document.getElementById("select_all");
    
    _select_all.addEventListener("click",function() {
         var _input = document.querySelectorAll("#shop_content ul input[type=checkbox]");
                            
            for(var i = 0;i<_input.length;i++) {
                 _input[i].checked="checked";
        }
     })

Mengapa kod dijalankan seperti biasa apabila _input diletakkan di bawah? Tidak bolehkah kita mendapatkan pembolehubah luaran dalam fungsi panggil balik mengikut skop?

大家讲道理大家讲道理2752 hari yang lalu512

membalas semua(5)saya akan balas

  • 黄舟

    黄舟2017-05-19 10:36:59

    Anda boleh menguji kedua-duanya sendiri: https://jsfiddle.net/8j9q69qm/

    balas
    0
  • PHP中文网

    PHP中文网2017-05-19 10:36:59

    Diuji, kedua-duanya OK

    balas
    0
  • PHP中文网

    PHP中文网2017-05-19 10:36:59

    Tidak, semuanya sama

    balas
    0
  • 習慣沉默

    習慣沉默2017-05-19 10:36:59

    var _select_all = document.getElementById("select_all");
    var _input = document.querySelectorAll("#shop_content ul input[type=checkbox]");
    console.log(_input);
    _select_all.addEventListener("click",function() {
        
                            
            for(var i = 0;i<_input.length;i++) {
                 _input[i].checked="checked";
        }
     })

    Anda akan tahu apabila anda melihat log Jika ia tidak ditentukan, anda akan tahu di mana masalahnya.

    balas
    0
  • 習慣沉默

    習慣沉默2017-05-19 10:36:59

    Salah satunya ialah menyemak nod terlebih dahulu dan menyimpannya dalam cache, dan satu lagi ialah menyemak nod dalam masa nyata apabila mengklik. Jika nod yang sepadan dengan pemilih #shop_content ul input[type=checkbox] tidak berubah, kedua-dua kaedah adalah sama dan kecekapan caching adalah agak tinggi. Jika nod yang sepadan mungkin dipadamkan, ditambah atau diganti, anda mesti menggunakan kaedah kedua untuk mencari nod dalam masa nyata setiap kali anda mengkliknya

    balas
    0
  • Batalbalas