this.style.backgroundColor don'我不在IE7/8工作
this.style.backgroundColor don't work in IE7/8
我的代码是:
<!DOCTYPE html>
<html>
<head>
<title>Demo</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
p{
border:1px solid #CCC;
margin:5px;
padding:5px;
}
</style>
<script type="text/javascript">
window.onload = changeColor;
function changeColor() {
for(var i =0; i < document.getElementById("main").getElementsByTagName("p").length; i++) {
var obj = document.getElementById("main").getElementsByTagName("p")[i];
if (window.addEventListener) {
obj.addEventListener('mousemove', function () {
this.style.backgroundColor ="#EEE";
}, false);
obj.addEventListener('mouseout', function () {
this.style.backgroundColor ="#FFF";
}, false);
} else if (window.attachEvent) {
//for ie
obj.attachEvent('onmousemove', function () {
this.style.backgroundColor ="#EEE";
});
obj.attachEvent('onmouseout', function () {
this.style.backgroundColor ="#FFF";
});
}
}
}
</script>
</head>
<body>
<div>
<p>1</p>
<div id="main">
<p>2.1</p>
<p>2.2</p>
<p>2.3</p>
</div>
</div>
</body>
</html>
它在Chrome、FireFox和ie9中运行良好,但在IE7/8 中无法运行
错误消息是:无法设置"backgroundColor"的属性值:对象为null或未定义
荣跟我有什么关系?
在IE中使用attachEvent
时,this
设置为window
对象,而不是事件发生的对象。
在IE中,全局变量window.event.srcElement
将包含事件的目标对象。
您可以编写这样的变通方案,以使所有事件处理程序工作相同:
function hookEvent(event, obj, fn) {
if (obj.addEventListener) {
obj.addEventListener(event, fn, false);
} else {
obj.attachEvent("on" + event, function() {return(fn.call(obj, window.event));});
}
}
这将使得this
被设置为事件的源对象,并且事件处理程序的参数是事件对象。
this
未绑定到IE的attachEvent
中的源元素。
请改用event.srcElement
。
还要注意,event
全局对象属性及其srcElement
属性也是IE特定的。
相关文章:
- 应该怎么做才能使其在IE7中工作
- Chrome 中的图片映射:事件未触发!在IE7中工作正常
- 无法在 IE 9 中传递此运算符的值,而它在 IE7 和 IE8 中工作正常
- 使 JavaScript 特定的代码在 IE7 中工作
- 获取尾随逗号(在JavaScript中)在IE7 / IE8中工作
- jquery设置隐藏的输入值在IE7和IE8中未按预期工作
- 推文按钮在IE7中无法正确显示,但在Mozilla,chrome和IE 8中工作正常
- 为什么我的应用程序中的某些组件在IE7中工作,而在IE9中不起作用
- slideToggle()在IE7中无法正常工作
- 我可以使用excanvas或类似的画布填充程序让impact js在IE7和/或8中工作吗
- this.style.backgroundColor don'我不在IE7/8工作
- 让hashchange事件在所有浏览器(包括IE7)中工作
- 带有渐变的Javascript滑块在chrome上失败,而在FF和IE7/8/9上工作
- IE7中没有填充mootools中的动态下拉列表.IE8工作良好
- 水平菜单和具有公共边界的子菜单,它们也必须在ie7中工作
- jQuery:包含在ie7中不工作的内容(jQuery 1.3.5)
- jQuery Scroll不能在ie7和ie8中工作
- 美元(& # 39;html # 39;) .append()并# 39;t在IE7工作
- ie7问题:jquery点击编辑不工作
- 按钮标签在ie7中不工作