gpt4 book ai didi

javascript - 菜单 : hover not working after I do click

转载 作者:太空宇宙 更新时间:2023-11-03 20:33:11 26 4
gpt4 key购买 nike

您好,我知道有很多帖子问同样的问题,但由于我理解起来太复杂了,因为我是 css、js 和 html 方面的新手。

所以当我的页面加载时。悬停效果很好,然后当我单击一个选项时...(执行一些 js 代码)然后悬停不起作用。我想弄清楚为什么会这样。但我不知道。

这是一个简单的代码(请尽量不要使用css3、html5和javascript以外的其他语言)...

<!DOCTYPE html>
<html>
<head>
</head>
<!--___________________STYLES-->
<style>
body {
padding: 0;
margin: 0;
background: gray;
}
a {
text-decoration: none;
color: black;
background: white;
display: block;
width: 200px;
font-size: 100px;
}
a:hover {
color: white ;
background: black ;
}
ul {
list-style: none;
}
#parrafo {
border: 1px dashed white;
height: 1.2em;
}

</style>

<!--___________________BODY-->
<body>
<br/>
<div id="d1">
<ul>
<li><a href="#" id="op1" onClick="SelectOp(this.id)">OP1</a></li>
<li><a href="#" id="op2" onClick="SelectOp(this.id)">OP2</a></li>
<li><a href="#" id="op3" onClick="SelectOp(this.id)">OP3</a></li>
<li><a href="#" id="op4" onClick="SelectOp(this.id)">OP4</a></li>
<li><a href="#" id="op5" onClick="SelectOp(this.id)">OP5</a></li>
</ul>
<br/>
<p id="parrafo"></p>
</div>
</body>

<!--___________________JAVSCRIPT-->
<script>



function clearOP(par) {
var i, n;

n = document.getElementsByTagName('a').length;

for (i=1; i<=n; i++) {
document.getElementById('op'+i).style.color = 'black';
document.getElementById('op'+i).style.background = 'white';
}
}

function SelectOp(param) {
var i, x;

i=1;
while (param != 'op'+i) {
i++;
}

clearOP(param);
document.getElementById('op'+i).style.color = 'white';
document.getElementById('op'+i).style.background = 'black';

}
</script>
</html>

最佳答案

当您使用脚本设置样式时,它会覆盖您的 CSS 悬停规则。

改为切换类。

我还稍微优化了你的脚本,不需要使用所有那些代码。

<!DOCTYPE html>
<html>

<head>
</head>
<!--___________________STYLES-->
<style>
body {
padding: 0;
margin: 0;
background: gray;
}
a {
text-decoration: none;
color: black;
background: white;
display: block;
width: 200px;
font-size: 100px;
}
a:hover {
color: white;
background: black;
}
a.selected { /* added this class */
color: white;
background: black;
}
ul {
list-style: none;
}
#parrafo {
border: 1px dashed white;
height: 1.2em;
}
</style>

<!--___________________BODY-->

<body>
<br/>
<div id="d1" value="0">
<ul>
<li><a href="#" id="op1" class="selected" onClick="SelectOp(this.id)">OP1</a>
</li>
<li><a href="#" id="op2" onClick="SelectOp(this.id)">OP2</a>
</li>
<li><a href="#" id="op3" onClick="SelectOp(this.id)">OP3</a>
</li>
<li><a href="#" id="op4" onClick="SelectOp(this.id)">OP4</a>
</li>
<li><a href="#" id="op5" onClick="SelectOp(this.id)">OP5</a>
</li>
</ul>
<br/>
<p id="parrafo"></p>
</div>
</body>

<!--___________________JAVSCRIPT-->
<script>

function SelectOp(param) {
document.querySelector('.selected').className = '';
document.getElementById(param).className = 'selected';
}

</script>

</html>


我还想建议不要使用内联脚本,使用事件监听器,就像在这个示例中一样

var elems = document.querySelectorAll('#d1 a');   /*  find all anchor inside #d1         */

elems[0].className = 'selected'; /* set first as selected */

for (var i = 0; i < elems.length; i++) { /* iterate all and add click handler */
elems[i].addEventListener('click', function(e) {
document.querySelector('.selected').className = '';
e.target.className = 'selected';
})
}
body {
padding: 0;
margin: 0;
background: gray;
}
a {
text-decoration: none;
color: black;
background: white;
display: block;
width: 200px;
font-size: 100px;
}
a:hover {
color: white;
background: #333;
}
a.selected { /* added this class */
color: white;
background: black;
}
ul {
list-style: none;
}
#parrafo {
border: 1px dashed white;
height: 1.2em;
}
<br/>
<div id="d1" value="0">
<ul>
<li><a href="#" id="op1">OP1</a>
</li>
<li><a href="#" id="op2">OP2</a>
</li>
<li><a href="#" id="op3">OP3</a>
</li>
<li><a href="#" id="op4">OP4</a>
</li>
<li><a href="#" id="op5">OP5</a>
</li>
</ul>
<br/>
<p id="parrafo"></p>
</div>

关于javascript - 菜单 : hover not working after I do click,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37760654/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com