使用javascript更改backgroundColor

时间:2012-02-09 01:47:36

标签: php javascript html css internet-explorer

此脚本适用于除IE以外的所有其他浏览器:

nav.addEventListener('mouseover',function(e) {
        switch(e.target.id) {
            case 'aGallery':
            navOpacity.style.backgroundColor = "red";
            break;
            case 'aContact':
            navOpacity.style.backgroundColor = "green";
            break;
            case 'aAbout':
            navOpacity.style.backgroundColor = "yellow";
            break;
            case 'aHome':
            navOpacity.style.backgroundColor = "#CC33CC";
            break;
        }
    },false);

在IE中,backgroundcolor在悬停时不会改变。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

在IE中,您必须使用attachEvent而不是标准addEventListener。并使用srcElement代替target进行IE浏览。

试试这个。

function mouseOverHandler(e) {
        switch((e.target || e.srcElement).id) {
            case 'aGallery':
            navOpacity.style.backgroundColor = "red";
            break;
            case 'aContact':
            navOpacity.style.backgroundColor = "green";
            break;
            case 'aAbout':
            navOpacity.style.backgroundColor = "yellow";
            break;
            case 'aHome':
            navOpacity.style.backgroundColor = "#CC33CC";
            break;
        }
}

if (el.addEventListener){
  el.addEventListener('mouseover', mouseOverHandler, false); 
} 
else if (el.attachEvent){
  el.attachEvent('onmouseover', mouseOverHandler);
}

答案 1 :(得分:1)

IE使用事件的'on'版本,行onclickonmouseover。应该有你的问题。

此外,IE(版本9之前)不支持addEventListener。您必须使用attachEvent

将此代码视为起点:

if (el.addEventListener){
  el.addEventListener('click', myFunc);
} else if (el.attachEvent){
  el.attachEvent('onclick', myFunc);
}