Metode addEventListener

Metode addEventListener memungkinkan untuk menetapkan penangan event pada elemen. Dengan menggunakannya, Anda dapat menentukan, misalnya, apa yang harus dilakukan saat mengklik tombol atau apa yang harus dilakukan saat mengetik teks dalam bidang teks. Pada parameter pertama, tentukan jenis event yang diteruskan, pada parameter kedua - fungsi yang akan dijalankan setelah event yang ditentukan pada parameter pertama. Pada parameter ketiga yang opsional, teruskan karakteristik objek (once, capture, passive) atau parameter useCapture.

Sintaksis

javascriptelemen.addEventListener('jenis event', fungsi, [karakteristik objek]);
atau
elemen.addEventListener('jenis event', fungsi, [useCapture]);

Contoh

Mari kita buat agar saat mengklik tombol, pesan ditampilkan:

html<input type="button" id="button" value="click me">
javascriptlet button = document.querySelector('#button');

button.addEventListener('click', function() {
  alert('message');
});

Результат:

Contoh

Mari kita tulis kode agar saat kehilangan fokus pada input, pesan dengan teks dari input tersebut ditampilkan:

html<input id="input" value="text">
javascriptlet input = document.querySelector('#input');

input.addEventListener('blur', function() {
  alert(this.value);
});

Результат:

Contoh

Mari kita buat agar saat mengklik tombol, pesan hanya ditampilkan di konsol sekali saja. Untuk ini, kita akan menggunakan parameter kedua:

html<input type="button" id="button" value="click me">
javascriptlet button = document.querySelector('#button');

button.addEventListener('click',
  function() {
    console.log('message');
  },
  {
    once: true
  }
);

Contoh

Parameter passive melarang pemanggilan metode event.preventDefault saat menangani event. Mari kita terapkan metode event.preventDefault pada contoh sebelumnya, dan juga tentukan nilai true pada parameter passive:

html<input type="button" id="button" value="click me">
javascriptlet button = document.querySelector('#button');

button.addEventListener('click',
  function(event) {
    event.preventDefault();
    console.log('No message');
  },
  {
    passive: true
  }
);

Setelah kode dijalankan kita akan melihat pesan berikut:

javascript'No message';
'Unable to preventDefault inside passive event listener invocation.'

Contoh

Parameter useCapture dengan nilai true menunjukkan bubbling event dari elemen dalam ke elemen luar, sedangkan dengan nilai false - dari elemen luar ke elemen dalam. Saat meneruskan parameter useCapture, namanya dihilangkan dan hanya ditulis true atau false. Mari kita lihat bagaimana event bubbling pada elemen induk dan anak saat mengkliknya:

html<div id="parent">Parent
  <p id="child">Child</p>
</div>
css#parent{
  width: 60px;
  padding: 10px;
  border: 1px solid red;
  text-align: center;
}
#child{
  width: 60px;
  marging-right: 40px;
  border: 1px solid blue;
  text-align: center;
}
javascriptlet parent = document.querySelector('#parent');
let child = document.querySelector('#parent');

parent.addEventListener('click',
  () => alert('parent'), 
  true
);
child.addEventListener('click',
  () => alert('child'), 
  true
);

Результат:

Lihat juga