javascript - 如果函数遮盖了元素,如何正确处理鼠标悬停?

标签 javascript html onmouseover

我有一个由许多组成的网格:

<div id="block4-2" class="base" onmouseover="showSubElements(this);" 
     onmouseout="hideSubElements(this)"></div>

showSubElements() 创建按钮元素并将它们添加到 div 的innerHTML:

function showSubElements(divelem) {
    var row = divelem.id[6];
    var col = divelem.id[8];

    var a = document.createElement("BUTTON");
    a.setAttribute("class", "itemA subelem");
    a.setAttribute("id", "button" + col + "-" + row + "a");
    a.setAttribute("onclick", "console.log('TEST');");

    [repeat code for b, c and d]

    var a_str = "<button id=\"" + a.id + "\" " + "onclick=\"" + "console.log(\'TEST\');\" class=\"" + a.getAttribute("class") + "\"></button>";

    [repeat code for b, c and d]

    divelem.innerHTML = a_str + b_str + c_str + d_str;
}

隐藏子元素():

function hideSubElements(divelem) {
    divelem.innerHTML = "";
}

这段代码的问题是,当鼠标悬停在 div 元素上时,它也会悬停在按钮子元素上,因为它们的样式设置为每个元素都占据它们所在框的一个象限,因此当我将鼠标移入时它们会闪烁当鼠标停止移动时,该框就会消失。

最佳答案

这是因为 div 内的每次鼠标移动都会导致 showSubElements(this) 再次执行。

您应该禁用 showSubElements(this),直到鼠标离开 div (onmouseout)

关于javascript - 如果函数遮盖了元素,如何正确处理鼠标悬停?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56618189/

相关文章:

javascript - 我可以添加 onmouseover 属性只运行一次吗?

javascript - 数组对象在 splice() 语句之前从列表中移除 (JS)

javascript - 从黑白到彩色显示图像,就像它正在加载一样(从左到右)

html - 如何使用 chrome 检查 CSS 元素?

Javascript OnMouseOver 没有属性

javascript - 在 JSF 应用程序中显示消息

javascript - 尝试使用 .find() 查看我的集合时 Mongo 出现问题

javascript - 如果类被更改,jQuery 会执行代码

javascript - 使用javascript隐藏输入字段div类

php - 在php中按条件设置颜色