this.nextChild coming up mouseover/mouseout
this.nextChild coming up mouseover/mouseout
我是一名学生,仍在学习,如果这是一个愚蠢的问题,我很抱歉。通常情况下,我可以通过筛选这里的其他问题来解决这个问题,但这次我似乎陷入了困境。
我只是想做一个简单的mouseover/mouseout,当你把鼠标悬停在图像上时,图像会消失,锚标记中的文本会变成链接的名称(即,将鼠标悬停在房子图标上,它会消失,并被"主页"取代)。我让这个部分工作得很好,但当鼠标离开链接时,我无法将其切换回图标。这是链接的当前HTML:
<li class="linksLi">
<a id="#homeLink" data-namesrc="HOME" class="linksA">
<img src="img/home.svg" alt="Home Icon" class="links">
</a>
</li>
然后是javascript:
var linksImg = document.querySelectorAll(".links");
var linksName = document.querySelectorAll(".linksA");
function changeImg() {
this.classList.add("hide");
this.parentElement.innerHTML = this.parentElement.dataset.namesrc;
}
function changeName() {
this.innerHTML = "";
this.nextChild.classList.remove("hide");
}
for (var i=0;i<linksImg.length;i++) {
linksImg[i].addEventListener("mouseover", changeImg, false);
}
for (var j=0;j<linksName.length;j++) {
linksName[j].addEventListener("mouseleave", changeName, false);
}
changeImg()附加到img标记,changeName()附加在anchor标记上。但我的问题是在changeName()中,当我试图从孩子中删除类"隐藏"时,它会"告诉"我孩子是未定义的(尽管img标记显然在HTML中的a标记中)。我看到了很多关于节点和空白的东西,但我并不完全理解,所以我不知道这是不是问题所在?也许这是一个非常基本的问题,我错过了一些非常明显的东西,我不知道,但任何帮助都将不胜感激!
请只编写Java脚本,不要使用jQuery
尝试将事件作为函数的参数,并使用"event.target"而不是"this"
function changeImg(evt) {
evt.target.classList.add("hide");
evt.target.parentElement.innerHTML = evt.target.parentElement.dataset.namesrc;
}
"this"在JavaScript中是一个棘手的关键字,根据函数的调用方式,它可能有很多内容。
给你一个JSFiddle。
编辑我已经更新了JSFiddle来添加/删除span,而不是设置innerHTML。
感谢您的回答!对于任何想知道的人来说,我还通过使img和anchor标记成为兄弟,而不是将img作为anchor标签的子级来实现它。这样,我就可以在js中针对nextSibling,innerHTML创建一个空的锚标记并删除img的问题就不再是问题了。
- 音频控件在mouseover上显示,在mouseout上淡出
- Gridview ImageButton更改mouseover和mouseout上的图像
- 在mouseover上添加边框,在mouseout上删除边框
- Mouseover和Mouseout的行为没有达到预期
- Fancybox:让它在mouseover/mouseout上工作
- 如何在mouseover上从右向左滑动td,在mouseout上向后滑动
- Mouseover,Mouseout事件未在IE中启动
- Mouseover和mouseout对萤火虫不起作用
- 安装 ng-mouseover 和 ng-mouseout 会导致效率极低的 AngularJS 代码
- Mouseover和Mouseout之间的事件顺序
- 如何在asp.net c#中显示和隐藏mouseover和mouseout事件的标签
- 我想更改图像'的mouseover和mouseout效果取决于调用了哪个函数
- jQuery mouseover hover mouseout移除集合变量
- 听mouseover和mouseout<李>仅限活动?<李>当前触发这两个事件
- 与用于mouseover()和mouseout()(图像交换)的attr混淆
- 在元素中使用mouseover和mouseout会使悬停持续闪烁
- this.nextChild coming up mouseover/mouseout
- highcharts-在mouseover和mouseout上设置线条颜色
- 使用mouseover和mouseout代替:hover
- mouseover、mouseout、click事件处理程序未启动