CSS:
.motionContainerMenu{
width: 100%;
height: 30px;
position: relative;
margin: auto;
margin-bottom: -7px;
border: 2px solid red
}
.motionTop{
position:absolute;
border:2px solid blue;
background-color: red;
height:10px;
width:100%
}
HTML:
<nav>
<ul>
<li>
<a href="transcript.php">Test one</a>
<div class="motionContainerMenu">
<div class="motionTop"></div>
</div>
</li>
<li>
<a href="contact.php">TestTwo</a>
<div id="motionContainerMenu">
<div class="motionTop"></div>
</div>
</li>
</ul>
</nav>
使用Javascript:
function focusMenu(x) {
x.style.borderColor = "#fff";
x.style.height = "30px";
x.style.backgroundColor = "#555"
}
var elements = document.querySelectorAll(".motionTop");
for (var i = 0; i < elements.length; i++) {
elements[i].addEventListener( "mouseover", function() { focusMenu(x) } );
};
在代码的最后一行,我希望每个.motionTop独立行动。我删除了focusMenu(x)并将其替换为Alert。我使用警报来测试代码,它完全符合我的要求。但是,我无法弄清楚如何使该行代码接受focusMenu函数。我是JavaScript的新手(我在此之前做了很多研究)。 谢谢你的任何建议。
答案 0 :(得分:4)
如果您将event
参数添加到mouseover
事件监听器,那么您可以通过event.currentTarget
获取相关元素:
elements[i].addEventListener( "mouseover", function( event ) {
focusMenu( event.currentTarget )
} );
我还建议您使用classList
而不是直接更改style
属性,例如:
CSS:
.focused {
border-color: #FFF;
height: 30px;
background-color: #555;
}
JavaScript的:
elements[i].addEventListener( "mouseover", function( event ) {
event.currentTarget.classList.add('focused');
} );
请注意,如果您希望在.focused
上删除mouseout
类,那么您根本不需要JavaScript,只需使用CSS :hover
:
.motionTop:hover {
border-color: #FFF;
height: 30px;
background-color: #555;
}