如何使用Javascript更改onmouseover事件?

问题描述:

我有一个HTML跨度其中的onmouseover和onmouseout改变它的类:如何使用Javascript更改onmouseover事件?

<span id="someSpan" class="static" onmouseover="this.className='active'" onmouseout="this.className='static'">Some Text</span> 

我希望能够启用和禁用(改变)的onmouseover和onmouseout使用页面上的其他地方称为JavaScript函数的事件。这可能吗?

当然。

document.getElementById('someSpan').onmouseover = 
    function() { 
     this.className='newactive'; 
    }; 
+0

谢谢,我想接受这个答案和Jason的。这符合我原型的需要,但我会在后面讨论如何使用JQuery来做到这一点。 – Trastle 2009-08-17 13:57:25

安全的方法是使用像Prototype或JQuery这样的JavaScript工具箱。

他们都可以轻松做到这一点,但它可以跨浏览器使用。例如,here is how you do it in JQuery

代码:

document.getElementById("someSpan").onmouseover = function() 
{ 
    //New code 
};//Do not forget the semicolon 

我会同意的jQuery会更容易,但如果你想坚持到JavaScript的,我相信这应该工作:

的document.getElementById(“elementId “).onMouseOut = functionName;

此外,jQuery的大小约为20Kb(生产框架文件的大小),所以它可能会减慢页面的加载速度。有些事情要考虑,如果您只是将它用于可能在JavaScript中完成的一些事情。

是的,你可以做到这一点简单地通过分配给的onmouseover和onmouseout为跨度元素实例的属性,如:

// Define your handler somewhere 
function myNewHandler() 
{ 
    // ...new logic... 
} 

// And where you want to swap it in: 
document.getElementById('someSpan').onmouseover = myNewHandler; 

...但是这是一个相当老式的方法做这个。更现代的方法使用addEventListener或attachEvent(取决于你是在做标准还是IE)来连接事件处理程序。像Prototype,jQuery和其他十几个库可以提供帮助。