javascript - 如何使用 DOM 可用的所有输出遍历 JavaScript for 循环
问题描述
我有一个函数,它查看一个对象数组并运行一个 for 循环来迭代并创建几个 jquery 函数。一切都很好,除了当它完成时 DOM 只看到 for 循环的最后一次迭代。它正在打印页面上的按钮,我希望每个按钮都显示与其关联的工具提示,因此我需要 for 循环的每次迭代都可用。任何清理它的帮助或提示都会很棒!
$(window).load(function () {
var i;
for (i = 1; i <= array.length; i++) {
(function(){
var invbuttons = "#invbuttons" + i;
var tooltip = "#tooltip" + i;
$(invbuttons).on("mouseover", function () {
$(tooltip).css({
visibility: "visible",
width: "500px"
});
});
$(invbuttons).on("mouseout", function () {
$(tooltip).css({
visibility: "hidden",
width: "0px"
});
});
})}
});
解决方案
我认为有一个更简单、更优雅的解决方案。
您可以为所有这些按钮设置一个通用类,例如.invbuttons
.
然后很容易使用querySelectorAll
javascript 方法获取它们的列表:
document.querySelectorAll('.invbuttons').forEach(btn => {
btn.addEventListener('mouseover', onMouseOver)
btn.addEventListener('mouseout', onMouseOut)
})
最后,您只需为每种情况声明适当的方法:
function onMouseOver() {
...
}
function onMouseOut() {
...
}
祝你好运!
推荐阅读
- c++ - 避免对象切片
- flutter - Flutter release apk 未安装在设备上
- java - 如何在非持久实体中序列化嵌套的 PersistentEntityResource
- java - 打开带有浏览器视图的 IntelliJ 的 Scenebuilder 时。我无法运行/调试应用程序,因为 BrowserContext 已锁定
- node.js - 当通过NodeJS中的multer上传错误的文件类型时如何重定向回页面
- pandas - 在 Pandas 中设置索引然后转换为 Dask 是否更好,反之亦然?
- python - 在 Python 中正确实现 ArchiveLib 压缩
- corda - Corda测试网部署节点4.0版
- java - 处理会话时出现 IndexOutOfBoundsException
- c++ - 如何正确读取二进制文件?