gpt4 book ai didi

javascript - 通过悬停 ul li 来切换图片

转载 作者:行者123 更新时间:2023-11-30 10:06:13 24 4
gpt4 key购买 nike

我只需要它是一个 javascript 解决方案。请引用 this demo

目标是将点悬停在右下角并相应地交换图像。但是它现在所做的是在悬停时显示一个空白页面,并且整个 ul变得垂直并转到左上角。我这里做错了什么???

HTML:

<div id="wrapper">  
<section id="contentWrapper">
<div id="resistorContent" class="content">
<section id="resistorDetail1"><img src="http://d3d71ba2asa5oz.cloudfront.net/40000483/images/pic1.jpg"></section>
<section id="resistorDetail2"><img src="http://d3d71ba2asa5oz.cloudfront.net/40000483/images/pic2.jpg"></section>
<section id="resistorDetail3"><img src="http://d3d71ba2asa5oz.cloudfront.net/40000483/images/pic3.jpg"></section>
<section id="resistorDetail4"><img src="http://d3d71ba2asa5oz.cloudfront.net/40000483/images/pic4.jpg"></section>
<ul>
<li onMouseOver="showDetail(resistorDetail1)"></li>
<li onMouseOver="showDetail(resistorDetail2)"></li>
<li onMouseOver="showDetail(resistorDetail3)"></li>
<li onMouseOver="showDetail(resistorDetail4)"></li>
</ul>
</div>
</section>
</div>

JavaScript:

<script type="text/javascript">
var children = document.querySelectorAll('.content > section[id]')
function showDetail(target){
for (var i = 0, child; child = children[i]; i++) {
child.style.display = 'none';
}
document.getElementById(target).style.display = 'block';
}
</script>

可能的 CSS 冲突?:

.content section:not(:first-child) {
display: none;
}

提前致谢!

最佳答案

长话短说

这是工作 fiddle :https://jsfiddle.net/2qz2srqs/3/

原因

您的代码非常接近,但有一些小问题。

第一个是复制粘贴错误,您有两个 ID 为 resistorDetail3 的元素.

其次,onmouseover 的语法事件不正确。在任何 javascript 前加上 javascript:并确保它具有正确的语法。

第三,你的showDetail方法需要一个字符串 id要显示的元素。在你的onmouseover你的声明showDetail(resistorDetail1)而不是 showDetail('resistorDetail1') .

最后,当您在 HTML 中引用 javascript 时,您需要确保首先加载 javascript。只需查看开发人员的控制台,您就可以通过错误看到它 "showDetail is not defined. .我把它换成了No wrap - in <body>它工作正常。

但是 我强烈建议不要直接从您的 HTML 中引用 javascript。相反,首先加载 HTML,然后使用 javascript 的 DOM 就绪事件来绑定(bind)您的事件。这将增加您的加载时间,并在需要时更容易切换到 jQuery/Zepto 之类的东西。

完整代码

HTML

<section id="contentWrapper">
<div id="resistorContent" class="content">
<section id="resistorDetail1">
<img src="http://d3d71ba2asa5oz.cloudfront.net/40000483/images/pic1.jpg" />
</section>
<section id="resistorDetail2">
<img src="http://d3d71ba2asa5oz.cloudfront.net/40000483/images/pic2.jpg" />
</section>
<section id="resistorDetail3">
<img src="http://d3d71ba2asa5oz.cloudfront.net/40000483/images/pic3.jpg" />
</section>
<section id="resistorDetail4">
<img src="http://d3d71ba2asa5oz.cloudfront.net/40000483/images/pic4.jpg" />
</section>
<ul>
<li onmouseover="javascript: showDetail('resistorDetail1')"></li>
<li onmouseover="javascript: showDetail('resistorDetail2')"></li>
<li onmouseover="javascript: showDetail('resistorDetail3')"></li>
<li onmouseover="javascript: showDetail('resistorDetail4')"></li>
</ul>
</div>
</section>

JS

var children = document.querySelectorAll('.content > section[id]');

function showDetail(target) {
for (var i = 0, child; child = children[i]; i++) {
child.style.display = 'none';
}
document.getElementById(target).style.display = 'block';
}

CSS

(unchanged)

关于javascript - 通过悬停 ul li 来切换图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29017817/

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