Web js效果:当鼠标滑过某部电影名字,在该名字上面显示该电影的具体内容信息,电影名显示在索引值为奇数的<li>中,电影具体内容显示在索引值为偶数的<li>,同时使用<span>将具体内容分开,为奇数行添加鼠标滑过事件,事件中隐藏偶数行,显示鼠标滑动的奇数行的上一行,采用恢复所有行背景色的方法恢复曾经改变过奇数行背景色,为当前奇数行重设背景色
时间: 2024-04-05 08:35:42 浏览: 129
好的,这是一个有趣的问题,下面是代码实现:
HTML代码:
```html
<ul id="movieList">
<li>电影1</li>
<li>
<span>电影1的具体内容</span>
</li>
<li>电影2</li>
<li>
<span>电影2的具体内容</span>
</li>
<li>电影3</li>
<li>
<span>电影3的具体内容</span>
</li>
<li>电影4</li>
<li>
<span>电影4的具体内容</span>
</li>
</ul>
```
JavaScript 代码:
```javascript
//获取电影列表
var movieList = document.getElementById('movieList');
//获取电影列表中的所有 li 元素
var movieItems = movieList.getElementsByTagName('li');
//遍历电影列表中的所有 li 元素
for (var i = 0; i < movieItems.length; i++) {
//判断当前 li 元素的索引是否为奇数
if (i % 2 == 0) {
//如果是奇数,则为该 li 元素添加鼠标滑过事件
movieItems[i].onmouseover = function() {
//获取当前 li 元素的下一个兄弟节点
var content = this.nextSibling;
//如果下一个兄弟节点不是 span 元素,则继续向下查找
while (content && content.nodeName != 'SPAN') {
content = content.nextSibling;
}
//如果找到了 span 元素,则显示该 span 元素
if (content && content.nodeName == 'SPAN') {
content.style.display = 'block';
//获取当前 li 元素的上一个兄弟节点
var prevItem = this.previousSibling;
//如果上一个兄弟节点不是 li 元素,则继续向上查找
while (prevItem && prevItem.nodeName != 'LI') {
prevItem = prevItem.previousSibling;
}
//如果找到了 li 元素,则为该 li 元素设置背景色
if (prevItem && prevItem.nodeName == 'LI') {
//恢复所有行背景色
for (var j = 0; j < movieItems.length; j++) {
movieItems[j].style.backgroundColor = '';
}
//为当前奇数行重设背景色
this.style.backgroundColor = '#ccc';
//隐藏偶数行
content.previousSibling.style.display = 'none';
}
}
};
}
}
```
这段代码实现的功能是,当鼠标滑过索引值为奇数的 li 元素时,显示该 li 元素下面的 span 元素,同时隐藏该 li 元素下面的偶数 li 元素,为当前奇数行设置背景色,恢复其他行的背景色。
阅读全文