javascript - 鼠标悬停在整个页面而不是一个元素上工作?

标签 javascript function prototype mouseover

我是网络编程的初学者,不幸的是我已经遇到了问题。我想使用原型(prototype)的鼠标悬停(鼠标移出)功能来添加或删除类,但由于某种原因,警报(用于调试)在页面第一次加载时出现。我知道问这个问题一定很可笑,但我看不出问题所在。我希望仅当我使用“菜单”类浏览对象时才会发出警报。

这是我的代码:

window.onload = function(){
    var menuitems = $$('.menu');
    for(var i = 0;i < menuitems.length;i++){
        menuitems[i].observe("mouseover",alert("over"));
        menuitems[i].observe("mouseout",alert("out"));
    }
}
PS。我在 google 和 stackoverflow 上进行了搜索,但找不到类似的问题。如果我错了请纠正我。

最佳答案

observe 方法的第二个参数应该是一个函数 - 通过实际调用 alert() ,您只需引发一个当事件处理程序被定义时(即页面加载时)而不是被触发时发出警报。

试试这个:

window.onload = function() {
    var menuitems = $$('.menu');
    for(var i = 0; i < menuitems.length; i++) {
        menuitems[i].observe("mouseover", function() {
            alert("over");
        });
        menuitems[i].observe("mouseout", function() {
            alert("out");
        });
    }
};

我已经内联定义了事件处理函数,但没有调用它们。当 mouseover/mouseout 事件被触发时,它们将被调用。或者,您可以提前定义函数:

window.onload = function() {
    var handleMouseover = function() {
        alert("over");
    };
    var handleMouseover = function() {
        alert("out");
    };

    var menuitems = $$('.menu');
    for(var i = 0; i < menuitems.length; i++) {
        menuitems[i].observe("mouseover", handleMouseover);
        menuitems[i].observe("mouseout", handleMouseout);
    }
};

关于javascript - 鼠标悬停在整个页面而不是一个元素上工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10759759/

相关文章:

javascript - 使用removeChild() jquery一次删除两个项目

php - 如何使用具有定义为第三个非可选参数的函数

java - 了解来自 Java 和 C++ 背景的 Javascript 原型(prototype)

javascript - 在 IE 上滚动 div 时触发模糊事件

javascript - Protractor - 无法读取 EC.textToBePresentInElement 的未定义属性绑定(bind)

javascript - 'this.randomGenes' 为什么不是一个函数?

Javascript 'Namespaces' 和 jQuery AJAX

javascript - 如何在另一个原型(prototype)中创建可调用原型(prototype)方法

javascript - JSON.parse - 如何处理大写 bool 值?

c - 如何通过函数将指针传递给 c 中未声明的可修改 1/2D 数组并保留它们的值?