我是网络编程的初学者,不幸的是我已经遇到了问题。我想使用原型(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/