addEventListener metodu

addEventListener metodu elementə hadisə işləyiciləri təyin etməyə imkan verir. Onun köməyi ilə, məsələn, düyməyə kliklənəndə nə etməli və ya mətn sahəsinə mətn daxil ediləndə nə etməli olduğunu göstərmək olar. Birinci parametrdə ötürülən hadisənin tipini, ikincidə isə birinci parametrdə göstərilən hadisədən sonra işləyəcək funksiyanı göstəririk. Üçüncü isteğe bağlı parametrdə obyektin xüsusiyyətlərini (once, capture, passive) və ya useCapture parametrini ötürürük.

Sintaksis

javascriptelement.addEventListener('hadisə tipi', funksiya, [obyekt xüsusiyyətləri]);
və ya
element.addEventListener('hadisə tipi', funksiya, [useCapture]);

Nümunə

Gəlin elə edək ki, düyməyə kliklənəndə mesaj çıxsın:

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

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

Результат:

Nümunə

Gəlin kodu yazaq ki, inputda fokus itiriləndə həmin inputun mətni olan mesaj çıxsın:

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

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

Результат:

Nümunə

Gəlin elə edək ki, düyməyə kliklənəndə mesaj konsola yalnız bir dəfə çıxsın. Bunun üçün ikinci parametrdən istifadə edək:

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

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

Nümunə

passive parametri hadisə işlənərkən event.preventDefault metodunun çağırılmasını qadağan edir. Gəlin əvvəlki nümunəyə event.preventDefault metodunu tətbiq edək, həmçinin passive parametrində true qiymətini göstərək:

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

Kodu icra etdikdən sonra biz aşağıdakı mesajları görəcəyik:

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

Nümunə

useCapture parametri true qiymətində hadisələrin daxili elementdən xariciyə doğru qalxmasını, false qiymətində isə xaricidən daxiliyə doğru qalxmasını göstərir. useCapture parametri ötürülərkən onun adı buraxılır və sadəcə true və ya false yazılır. Gəlin onlara kliklənəndə valideyn və uşaq elementlərində hadisələrin necə qalxdığına baxaq:

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
);

Результат:

Həmçinin bax