我必须并排放置三个图像,并具有onmouseover功能,当用户将鼠标移到图像上时,该特定图像将在其他两个图像上重复。当用户将鼠标从图像中移出时,图像将还原为初始页面。 但是我必须为此使用子节点。我无法弄清楚。
我已经尝试了以下代码,但是它什么也没做。 我尝试将代码粘贴到此处,但是它已经出现在消息正文中,因此我在您可以看到它的地方制作了该Codepen。 到目前为止,我只是让index [1]和index [2]图片显示在index [0]上,但是没有其他更改在发生。 https://codepen.io/anon/pen/xNjezN
function heroes(q){
if(q.src == imgArray[0])
{
for(var index=0; index<images.length; index++)
{
images[index] = document.getElementById("legends").childNodes[index];
images[index].src = imgArray[0];
}
}
else if(q.src == imgArray[1])
{
for(var index=0; index<images.length; index++)
{
images[index] = document.getElementById("legends").childNodes[index];
images[index].src = imgArray[1];
}
}
else if(q.src == imgArray[2])
{
for(var index=0; index<images.length; index++)
{
images[index] = document.getElementById("legends").childNodes[index];
images[index].src = imgArray[2];
}
}
}
如果有人可以提出建议。
答案 0 :(得分:1)
如果这是您想要的,我刚刚选择了您要在img
事件中获取src的所有onmouseout
标记。 onmouseout
回调函数我刚刚将mnImg.src
值替换为当前图像src。
如果要在鼠标悬停时替换img src,可以将onmouseout
替换为onmouseover
。
鼠标移出
let images = document.querySelectorAll('.img');
let mnImg = document.querySelector('#mnImg');
images.forEach(img => {
img.onmouseout = function() {
mnImg.src = this.src;
};
})
img {
height: 100px;
width: 100px;
}
<body>
<div id="legends">
<img src="https://imagizer.imageshack.com/img921/9646/HCBvlG.jpg" id="mnImg">
<img src="https://imagizer.imageshack.com/img924/3295/Fb6gMO.jpg" class='img'>
<img src="https://imagizer.imageshack.com/img923/6089/01GQK7.jpg" class='img'>
</div>
</body>
鼠标悬停
let images = document.querySelectorAll('.img');
let mnImg = document.querySelector('#mnImg');
images.forEach(img => {
img.onmouseover = function() {
mnImg.src = this.src;
};
})
img {
height: 100px;
width: 100px;
}
<body>
<div id="legends">
<img src="https://imagizer.imageshack.com/img921/9646/HCBvlG.jpg" id="mnImg">
<img src="https://imagizer.imageshack.com/img924/3295/Fb6gMO.jpg" class='img'>
<img src="https://imagizer.imageshack.com/img923/6089/01GQK7.jpg" class='img'>
</div>
</body>
答案 1 :(得分:0)
您快到了。有两件事要注意。第一,子节点实际上是"NodeList", which is only "array-like"。可以使用Array.from(nodeList)将其转换为数组。
第二个是将换行符读取为“文本”节点,因此实际上显示了7个childNodes。您可以使用Array.prototype.filter()
method过滤掉它们。
然后,当您使用实际的DOM元素时,可以设置和重置src:https://codepen.io/anon/pen/vwjwXm?editors=1010