javascript - 通过将鼠标悬停在其中一个按钮上来交换两个按钮的标签?
问题描述
我做了两个按钮
<div class="container">
<button>YES</button>
<button>NO</button>
<div>
我想要的是,当我将鼠标悬停在“否”按钮上时,按钮交换,不是按钮,而是文本交换。
我可以用 onclick 事件做到这一点,但没有“onhover”之类的东西。我希望你向我展示你是如何只使用 HTML、CSS 和 Vanilla JavaScript 来做到这一点的。
解决方案
使用委托,我们可以在一个 forEach 中切换每个按钮 - 注意我使用 [...] 扩展符号来允许较旧版本的较新浏览器也可以工作(Edge 16 我在看你):
const switchName = e => {
const tgt = e.target;
if (tgt.tagName !== "BUTTON") return; // ONLY switch when you touch a button
[...e.currentTarget.querySelectorAll("button")]
.forEach(but => but.textContent = but.textContent === "True" ? "False" : "True");
};
document.querySelector(".container").addEventListener("mouseover", switchName)
document.querySelector(".container").addEventListener("mouseout", switchName)
div.container {
padding: 15px;
background-color: teal;
width: 200px;
text-align: center;
}
.container button {
margin: 10px;
}
<div class="container">
<button>True</button>
<button>False</button>
</div>
CSS仅用于演示目的,不是答案的一部分
推荐阅读
- javascript - BoostrapTable - 根据数据库中的数据选择行
- azure - ODBC DataSource - 如何将数据保存在 Azure 云上以获取 PowerBI?
- google-apps-script - 具有域范围安装的 Gmail 插件不需要由谷歌审查
- python - 一个函数可以返回多少个值?
- c - 如何分析二进制可执行文件中编译函数(及其依赖项)的大小?
- javascript - Django 音乐播放器:按下播放按钮时,models.FileField 未正确将音频文件传递给 HTML
- android - 无法将 Android Studio 的调试器附加到 Android 进程并且无法从 Profiler 进行调试
- flutter - 如何在 VS Code 中查看 dart 编程语言的错误曲线?
- tensorflow - 我收到错误:模块 'tensorflow.keras.layers' 没有属性 'Normalization'
- android - MainActivity 作为导航图中的主页目的地