Javascript onmouseover 和 onmouseout

标签 javascript html css onmouseover onmouseout

您可以在标题中看到它是什么。我有四个“div”,其中每个都有一个 p 标签。当我将鼠标放在第一个 div 上时,更改第一个 div 的 p 标签的“不透明度”。问题是当我继续将鼠标放在第二个或第三个“div”上时,只会更改第一个“div”中的标签“p”。它应该更改自己的“p”标签。 重要的是,我不能使用 CSS ":hover"。 问题很明显,就是都拥有相同的“id”。 我需要一个不会单独枚举所有不同类的 javascript。

对不起我的英语。 我希望你能理解我。 我的脚本:

<div onmouseout="normal();" onmouseover="hover();" >
    <p id="something">LOLOL</p>
</div>
<div onmouseout="normal();" onmouseover="hover();" >
    <p id="something">LOLOL</p>
</div>
<div onmouseout="normal();" onmouseover="hover();" >
    <p id="something">LOLOL</p>
</div>
<div onmouseout="normal();" onmouseover="hover();" >
    <p id="something">LOLOL</p>
</div>

Javascript:

function normal() {
var something = document.getElementById('something');
something.style.opacity = "0.5";
}
function hover() {
var something = document.getElementById('something');
something.style.opacity = "1";

CSS:

p {
    opacity: 0.5;
    color: red;
}

最佳答案

正如 Paul S. 建议的那样,您需要传递 this到函数,以便它知道它必须处理哪个元素。

<div onmouseout="normal(this);" onmouseover="hover(this);" >
    <p>LOLOL</p>
</div>
<div onmouseout="normal(this);" onmouseover="hover(this);" >
    <p>LOLOL</p>
</div>
<div onmouseout="normal(this);" onmouseover="hover(this);" >
    <p>LOLOL</p>
</div>
<div onmouseout="normal(this);" onmouseover="hover(this);" >
    <p>LOLOL</p>
</div>

然后选择子元素<p>对于过去的<div> .这里我选择第一个 child p ,即 this 的子数组中的第一个元素带有标签的元素 p ,这就是为什么你看到 [0] .因此,如果在每个 div 中你有两个段落,那么你可以使用例如getElementsByTagName("p")[1]选择第二个 <p> .

function normal(mydiv) {
    mydiv.getElementsByTagName("p")[0].style.opacity="0.5";
}
function hover(mydiv) {
    mydiv.getElementsByTagName("p")[0].style.opacity="1";
}

请参阅此处的工作示例:http://jsfiddle.net/mastazi/2REe5/

关于Javascript onmouseover 和 onmouseout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20013022/

相关文章:

html - 如何强调在两行上展开的超链接。 CSS-HTML 极客?

javascript - 自动扫描来自 ExtJS 的配置文件

javascript - 简单地用 Javascript 来汇总表单字段,我的问题在哪里?

javascript - 如果选择了所有 radio 中的任何一个选项,是否显示 Div?

javascript - 搜索不适用于数据表 1.10 上的输入标签

html - Chrome 和 Firefox/IE (Joomla) 之间的填充/边距差异的原因?

javascript - ES6 解构中的困惑

javascript - 为什么 2.23 + 0.17 = 2.4899999999999998 在 JavaScript 中?

javascript - 如何向 Meteor 应用程序添加 "# users online"功能?

jquery - 水平/垂直跨浏览器居中图像