Существует 7 событий 'onmouse ...' ...
onmousedown,
onmouseenter,
onmouseleave,
onmousemove,
onmouseout,
onmouseover,
onmouseup
..., поэтому важно использовать правильный для работы.
В примерещелчок и движение мыши внутри Элемента не применяются - все, что нам нужно, - это функция, которая вызывается один раз, когда мышь входит в , и элемент, и еще раз, когда мышь оставляет .Поэтому ...
<!-- HTML -->
<a class="level-item like-icon">
<div class="icon is-medium">
<i class="far fa-heart"
onmouseenter="change(this)"
onmouseleave="change(this)"></i>
</div>
</a>
Так что здесь представляется разумным использовать атрибуты onmouseenter
и onmouseleave
для вызова функции change()
, и в этом случае передать элемент HTML под мышью какаргумент через ключевые слова this
.
Теперь функция может тщательно исследовать элемент и проверить, имеет ли он требуемый и требуемый атрибут «data-prefix», и если да, то на что этот атрибут установлен.Затем мы можем использовать это условие для установки / сброса значения атрибута «data-prefix» ...
/* JavaScript */
change = (elem) => {
// does the Element have a 'data-prefix' attribute
// and what is it set to?
let isSet = elem.hasAttribute("data-prefix") && (
"far" === elem.getAttribute("data-prefix")
);
elem.setAttribute("data-prefix", (isSet ? "fas" : "far"));
}
Однако, как уже упоминалось, использование метода Element.addEventListener()
более надежно и гибко, чем полагаясьв атрибутах HTML, таких как onmouse...
.