Javascript singkatan untuk if. Kenyataan bersyarat jika lain. Penyataan keluar gelung putus dan teruskan dalam JavaScript. Keluar kenyataan

JavaScript EventTarget Definisi dan Aplikasi

Kaedah JavaScript addEventListener() bagi objek EventTarget membolehkan anda mendaftarkan pengendali acara jenis tertentu untuk sasaran tertentu.

Sasaran boleh menjadi objek seperti Elemen, Dokumen, Tetingkap atau sebarang objek lain yang menyokong acara, contohnya, objek seperti XMLHttpRequest, yang digunakan secara meluas dalam permintaan tak segerak AJAX(dari bahasa Inggeris Javascript dan XML Asynchronous- "JavaScript dan XML tak segerak"), yang membenarkan halaman tertentu mengemas kini hanya sebahagian daripadanya tanpa mengganggu pengalaman pengguna.

Sila ambil perhatian bahawa anda boleh menggunakan kaedah removeEventListener() untuk mengalih keluar pengendali acara yang dilampirkan menggunakan kaedah addEventListener().

Sokongan penyemak imbas untuk sintaks JavaScript: sasaran.addEventListener( menaip, pendengar); sasaran.addEventListener( menaip, pendengar, pilihan); sasaran.addEventListener( menaip, pendengar, useCapture); menaip- Tali pendengar- Fungsi pilihan- Objek useCapture- Model Objek Dokumen Spesifikasi Boolean (DOM) Tahap 2 Nilai Parameter Peristiwa Penerangan Parameter
menaip Nilai rentetan yang mewakili jenis acara untuk didengari (nilainya sensitif huruf besar-besaran). Parameter yang diperlukan.
pendengar Objek yang menerima pemberitahuan apabila peristiwa jenis yang ditentukan berlaku (objek yang melaksanakan antara muka Acara). Ini mestilah objek yang melaksanakan antara muka EventListener, atau fungsi JavaScript. Parameter yang diperlukan.
pilihan Objek yang menunjukkan ciri-ciri pendengar peristiwa (pilihan).
Pilihan yang tersedia:
  • capture - Nilai Boolean yang menentukan sama ada acara jenis ini akan dihantar kepada pendengar berdaftar (pengendali acara) sebelum dihantar ke mana-mana EventTarget DOM. Jika anda melepasi nilai boolean true , fungsi tersebut akan didaftarkan sebagai pengendali pemintasan dan akan dipanggil dalam fasa pemintasan ( fasa tangkapanfasa menggelegak).
  • sekali - Nilai Boolean yang menyatakan bahawa pengendali acara harus dipanggil tidak lebih daripada sekali selepas ditambah. Jika nilai boolean adalah benar , maka pendengar akan dialih keluar secara automatik apabila dipanggil.
  • pasif - Nilai Boolean yang, jika benar, menunjukkan bahawa fungsi yang ditentukan oleh pendengar tidak akan membatalkan tindakan lalai acara (panggilan preventDefault() preventDefault() dan penyemak imbas pengguna akan mengabaikannya dan menjana amaran apabila berbuat demikian dalam konsol .
useCapture Nilai Boolean yang menentukan sama ada acara jenis ini akan dihantar kepada pendengar berdaftar (pengendali acara) sebelum dihantar ke mana-mana EventTarget yang terletak di bawahnya dalam pepohon DOM.
Jika anda melepasi nilai boolean true , fungsi tersebut akan didaftarkan sebagai pengendali pemintasan dan akan dipanggil dalam fasa pemintasan ( fasa tangkapan). Nilai lalai adalah palsu - pengendali acara akan menyala dalam fasa menggelegak ( fasa menggelegak). Parameter pilihan. Parameter useCapture tidak selalunya pilihan, sebaiknya anda mendayakannya untuk sokongan penyemak imbas yang lebih luas.
Contoh penggunaan Penggunaan asas kaedah Menggunakan kaedah JavaScript addEventListener().
  • 1
const ul = document .querySelector("ul"), // pilih elemen ul pertama dalam senarai dokumenElements = document .querySelectorAll("li "); // pilih semua elemen li dalam dokumen const myFunc = function ( peristiwa) ( jika ( peristiwa.target.tagName === "LI ") ( // jika objek yang menghantar acara mempunyai nilai sifat tagName sama dengan LI peristiwa.target.style.color = "hijau"; // kemudian tetapkan warna teks kepada hijau ) ) ; ul.addEventListener("klik", myFunc); // tetapkan pengendali acara klik kepada elemen ul listElements.forEach(fungsi ( elem) ( // pergi melalui semua elemen koleksi elem.addEventListener("dblclick ", function ()( // tetapkan setiap elemen li kepada pengendali acara dblclick this .style.color = "#000 "; // tetapkan warna teks kepada hitam ) ) ) )

Dalam contoh ini, kami telah meletakkan senarai bertitik tumpu (

    ), di dalam yang kami letakkan lima senaraikan elemen (
  • ). Menggunakan kaedah querySelector() yang kami pilih pertama unsur
      dalam dokumen dan menggunakan kaedah querySelectorAll(), semua elemen
    • dalam dokumen, dan memulakan pembolehubah dengan nilai ini.

      Menggunakan kaedah addEventListener() kami menetapkan elemen itu

        pengendali acara "klik" (klik kiri pada elemen) yang, menggunakan sifat sasaran objek Acara, menyemak nama teg elemen dan jika nilai ini sepadan dengan nilai "LI", kemudian menukar gaya warna teks kepada hijau apabila dicetuskan. Sila ambil perhatian bahawa selalunya lebih mudah untuk memasang satu pengendali bagi setiap elemen induk, dan bukannya untuk setiap elemen secara berasingan, ini adalah benar terutamanya apabila bilangan elemen berubah secara dinamik, dalam hal ini tidak perlu mengemas kini pengendali untuk elemen.

        Jika nilai boolean adalah true , maka fungsi yang ditentukan oleh pendengar tidak akan membatalkan tindakan lalai acara (panggil kaedah preventDefault()). Jika pengendali acara memanggil kaedah preventDefault(), penyemak imbas pengguna akan mengabaikannya dan menjana amaran dalam konsol. Nilai palsu Boolean menunjukkan bahawa fungsi pengendali boleh membatalkan tindakan lalai acara (ia boleh memanggil kaedah preventDefault()).

        Mengikut spesifikasi, nilai lalai untuk parameter pasif sentiasa palsu . Walau bagaimanapun, ini membenarkan pendengar acara yang mengendalikan peristiwa sentuhan tertentu menyekat urutan penyemak imbas utama apabila cuba mengendalikan penatalan, yang boleh mengakibatkan kemerosotan prestasi yang ketara semasa pemprosesan menatal.

        Untuk mengelakkan masalah ini, beberapa pelayar (terutamanya Dan ) menukar nilai lalai parameter pasif kepada benar untuk peristiwa touchstart dan touchmove dalam nod peringkat dokumen Window , Document dan Document .body. Ini menghalang pendengar acara daripada dipanggil supaya ia tidak boleh menyekat halaman daripada dipaparkan semasa menatal.

        Anda tidak perlu risau tentang nilai pasif untuk acara skrol yang mendasari kerana ia tidak boleh dibatalkan dan pendengar acara tidak akan dapat menyekat halaman daripada dipaparkan juga.

        Nuansa menggunakan ini dalam pengendali acara

        Sebagai peraturan, adalah perlu untuk lulus elemen di mana pengendali acara dicetuskan, ini benar terutamanya apabila menggunakan pengendali acara generik untuk elemen jenis yang sama. Jika anda menambah fungsi pengendali acara biasa pada elemen menggunakan kaedah addEventListener(), maka nilai ini di dalam pengendali sedemikian akan menjadi rujukan kepada elemen. Nilai ini akan sama dengan nilai harta currentTarget bagi argumen acara objek Acara yang diserahkan kepada pengendali acara, sebagai contoh:

        elem.addEventListener("klik ", fungsi ( e) ( console .log(this .className); // akan mencetak ke konsol nilai sifat className bagi elemen elem console .log( e.currentTarget === ini ); // benar ))

        Sila ambil perhatian bahawa nilai ini boleh berubah, contohnya fungsi anak panah tidak mempunyai konteks ini sendiri dan dalam kes ini ini tidak akan merujuk kepada elemen:

        elem.addEventListener("klik", ( e) => ( console .log(this .className); // ini tidak akan merujuk kepada elemen elem console .log( e.currentTarget === ini ); // salah)

        Mari lihat situasi lain di mana pengendali acara ditentukan sebagai atribut acara dihidupkan HTML unsur. Kod JavaScript dalam nilai atribut secara berkesan dibalut ke dalam fungsi pengendali yang mengikat nilai ini dengan cara yang konsisten dengan kaedah addEventListener() (dalam kod ini mewakili rujukan kepada elemen):

        // memaparkan nilai sifat id elemen kepada konsol

        Apabila anda mengklik pada elemen, maklumat tentang nilai atribut global elemen akan dipaparkan dalam konsol, kerana nilai ini di dalam fungsi yang dipanggil oleh kod dalam nilai atribut berfungsi mengikut peraturan standard, dan dalam kes ini merujuk kepada elemen yang mencetuskan peristiwa. Mari kita lihat contoh berikut:

        // ini tidak akan merujuk kepada elemen yang mencetuskan acara);

        Ambil perhatian bahawa nilai ini di dalam fungsi myFunc() akan menjadi rujukan kepada objek Tetingkap global, atau tidak akan ditentukan jika mod ketat ditentukan ( mod ketat).

        Untuk lulus konteks yang diperlukan, anda boleh menggunakan kaedah panggilan() objek Fungsi, yang membolehkan anda memanggil (melaksanakan) fungsi sebagai kaedah objek, menetapkan konteks pelaksanaannya ( ini ) kepada nilai yang ditentukan, sambil meluluskan hujah yang diperlukan:

        const myFunc = function () ( console .log(this .id) // ini akan merujuk kepada elemen yang mencetuskan acara );

        Dalam kes ini, apabila peristiwa dicetuskan, nilai atribut global elemen yang mencetuskan acara akan dicetak ke konsol.

        Untuk menambah acara klik. Apabila pengguna mengklik pada butang ID="demo" elemen elemen output ialah "Hello World":


        . Document.getElementById("demo") innerHTML = "Hello World";
        });


        Cuba ia " Definisi dan Penggunaan

        Kaedah addEventListener() digunakan untuk menambah pengendali acara untuk elemen tertentu.


        contoh

        Anda boleh menambah seberapa banyak acara yang anda mahu dalam dokumen; menambah acara tidak akan menimpa acara sedia ada.

        Contoh ini menunjukkan cara menambah dua peristiwa klik pada elemen:

        Document.getElementById("myBtn") addEventListener("klik", MYFUNCTION);


        Cuba ia "
        contoh

        Anda boleh menambah pelbagai jenis acara dalam satu elemen.

        Contoh ini menunjukkan cara menambah berbilang acara dengan elemen:

        Document.getElementById("myBtn") addEventListener("MouseOver", MYFUNCTION);
        . Document.getElementById("myBtn") addEventListener("klik", someOtherFunction);
        . Document.getElementById("myBtn") addEventListener("MouseOut", someOtherFunction);


        Cuba ia "
        contoh

        Apabila menghantar nilai parameter, gunakan panggilan fungsi dengan parameter "fungsi tanpa nama":

        document.getElementById("myBtn"). addEventListener("klik", function()(
        tyPrinsHop(p1, p2);
        });


        Cuba ia "
        contoh

        Edit Rujukan Item:

        document.getElementById("myBtn"). addEventListener("klik", function()(
        this.style.backgroundColor = "merah";
        });


        Cuba ia "
        contoh

        Gunakan pilihan lanjutan untuk menunjukkan perbezaan useCapture menggelegak dan menangkap fasa:

        Document.getElementById("myDiv") addEventListener("klik", tyRipsHop, benar);

        Lampirkan acara klik pada elemen. Apabila pengguna mengklik pada butang, output adalah "Hello World" dalam

        Elemen dengan id = "demo":


        document.getElementById("demo").innerHTML = "Hello World";
        });

        Cubalah sendiri"

        Lagi contoh "Cuba Sendiri" di bawah.

        Definisi dan Penggunaan

        Kaedah addEventListener() melampirkan pengendali acara untuk elemen yang ditentukan.


        contoh

        Anda boleh menambah banyak acara pada satu elemen tanpa menulis ganti acara sedia ada.

        Contoh ini menunjukkan cara menambah dua peristiwa klik pada elemen yang sama:

        Document.getElementById("myBtn").addEventListener("klik", myFunction);

        Cubalah sendiri"
        contoh

        Anda boleh menambah pelbagai jenis acara pada satu elemen.

        Contoh ini menunjukkan cara menambahkan banyak acara pada elemen yang sama:

        Document.getElementById("myBtn").addEventListener("mouseover", myFunction);
        document.getElementById("myBtn").addEventListener("klik", someOtherFunction);
        document.getElementById("myBtn").addEventListener("mouseout", someOtherFunction);

        Cubalah sendiri"
        contoh

        Apabila menghantar nilai parameter, gunakan "fungsi tanpa nama" yang memanggil fungsi yang ditentukan dengan parameter:

        Document.getElementById("myBtn").addEventListener("klik", fungsi() (
        myFunction(p1, p2);
        });

        Cubalah sendiri"
        contoh

        Menukar warna latar belakang elemen:

        Document.getElementById("myBtn").addEventListener("klik", fungsi())(
        this.style.backgroundColor = "merah";