mouseenter/mouseoutイベントで同じクラスの別の要素をループしているときに、JSが要素上でトリガするように 'this'キーワードを組み込もうとしていると、ホバリングします。私はそれを動作させることはできません。'this'を持つ個々のクラス要素を参照
コードを読みやすくするために 'this'キーワードを使用しようとする試みを取り除きました。マウスオーバーしている要素だけがmouseenterを持っていて、それから要素をループしながらmouseoutイベントが適用されるようにするにはどうしたらいいですか?
私はjQueryソリューションを使用できません。
codepenペン:https://codepen.io/emilychews/pen/mMEEBw
コードは以下の通りです:
JS
// declare variable for the CSS class
var menuItem = document.querySelectorAll('.menu-item');
//loop through CSS class to change background to red
function myMouseEnter() {
for (i = 0; i < menuItem.length; i++) {
menuItem[i].style.background = "red";
}
}
//loop through CSS class to change remove red background
function myMouseLeave() {
for (i = 0; i < menuItem.length; i++) {
menuItem[i].style.background = "none";
}
}
//event handler to add function on mouseenter
for (j = 0; j < menuItem.length; j++) {
menuItem[j].addEventListener('mouseenter', myMouseEnter, false)
}
//event handler to add function on mouseout
for (k = 0; k < menuItem.length; k++) { menuItem[k].addEventListener('mouseout', myMouseLeave, false)
}
CSS
.menu-item {padding: 10px;
font-family: arial;
}
HTML
<ul class="unclick--menuitems">
<li class="menu-item"><a href="//google.com">About</a></li>
<li class="menu-item"><a href="//google.com">Projects</a</li>
<li class="menu-item"><a href="//google.com">Contact</a></li>
</ul>
ありがとうございました。それはとても有益な答えです。 –