如何使用Javascript更改onmouseover事件?

时间:2009-08-17 13:41:21

标签: javascript

我有一个HTML span,它改变了它的类onmouseover和onmouseout:

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

我希望能够使用页面上其他位置调用的Javascript函数启用和禁用(更改)onmouseover和onmouseout事件。这可能吗?

5 个答案:

答案 0 :(得分:3)

不确定。

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

答案 1 :(得分:1)

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

他们都可以轻松地完成这样的事情,但它可以跨浏览器工作。

例如,here is how you do it in JQuery

答案 2 :(得分:1)

我同意jQuery会更容易,但是如果你想坚持使用JavaScript,我相信这应该有用:

的document.getElementById( “elementId”)的onmouseout = functionName;

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

答案 3 :(得分:1)

是的,你可以简单地通过为span的Element实例分配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和其他十几个人的图书馆可以提供帮助。

答案 4 :(得分:0)

代码:

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