Mam kilka divów, które mają nazwę "Soundwhenhover". Chcę grać audio (dźwięk kliknięcia), gdy się nad nim najechałem. Mogę to osiągnąć, atsering przez elementy z nazwą klasy i dodanie słuchacza zdarzeń do myszy. Jeśli jednak poruszasz myszą wokół div, sprawia, że dźwięk jest bardziej niż raz. Chcę tylko, aby dźwięk grał raz za każdym razem, gdy się unosiłeś przez div. Dodałem boolean, który zmienia się na true, gdy się udaje, a następnie na milczeniu zmienia go na false. Problem z tym jest to, że div ma elementy dla dzieci, a kiedy się unosiłeś nad tym elementami, liczy się jako milka. Jak zrobić dźwięk raz dla div i elementy?

0
Reality 12 październik 2020, 17:41

1 odpowiedź

Najlepsza odpowiedź

Wystarczy wiązać dźwięk do zdarzenia myszy elementu macierzystego:

const mouseTarget = document.getElementById('mouseTarget');

mouseTarget.addEventListener('mouseenter', e => {
  console.log('play sound');
});
#mouseTarget, #child {
  border: 1px solid #333;
}

#mouseTarget {
  padding: 5px;
  width: 300px;
  height: 50px;
}


#child {
  padding: 5px;
  width: 200px;
  height: 20px;
}
<div id="mouseTarget">
 <div id="child">
  Test
 </div>
</div>
1
MauriceNino 12 październik 2020, 14:48