为什么这一段代码执行不了呢? objEvent.addEvent(document,"mouseup",function(){
objEvent.addEvent(document,"mousemove",null);
//document.onmousemove = null; 这里把注释去掉也不行
})
如果使用注释的DOM0级的就可以..
这到底怎么回去啊 ?
难道通过这样objEvent.addEvent 的添加事件是无法做到事件等于NULL的吗?
<!DOCTYPE HTML>
<html>
<head>
<title>soul42</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
<STYLE type="text/css">
* { margin:0; padding:0;}
#box{width:30px;margin:200px auto 0 ;display:block;position:relative;}
.wrap{margin:0;width:200px;position:absolute;top:0;left:0;overflow:hidden; background:red}
ul{position:absolute;top:0px;left:0;width:200px;}
li{height:20px;background:orange;margin-bottom:0px}
</STYLE></head>
<body>
<DIV style="POSITION: absolute; WIDTH: 50px; BACKGROUND: #f00; HEIGHT: 50px; LEFT: 0px" id="mydiv"></DIV> <script type="text/javascript">
var $ = function(id){return document.getElementById(id)}
var objEvent = {
addEvent:function(elem,type,func){
var _this = this;
if(elem.addEventListener){
elem.addEventListener(type,func,false);
}else if(elem.attachEvent){
elem.attachEvent("on"+type,func)
}else{
elem["on"+type] = func
}
},
getEvent:function(e){
return e = e|| window.event;
},
func:function(e){
e = objEvent.getEvent(e);
var posX = e.clientX - $("mydiv").offsetLeft;
(function(){
objEvent.addEvent(document,"mousemove",function(e){
e = objEvent.getEvent(e);
$("mydiv").style.left = (e.clientX - posX) +"px";
});
objEvent.addEvent(document,"mouseup",function(){
objEvent.addEvent(document,"mousemove",null);
//document.onmousemove = null;
}) /*document.onmousemove = function(e){
e = objEvent.getEvent(e);
$("mydiv").style.left = (e.clientX - posX) +"px";
}
document.onmouseup = function(e){
document.onmousemove = null;
}*/ })()
}
}
objEvent.addEvent($("mydiv"),"mousedown",objEvent.func);
</script></body>
</html>
objEvent.addEvent(document,"mousemove",null);
//document.onmousemove = null; 这里把注释去掉也不行
})
如果使用注释的DOM0级的就可以..
这到底怎么回去啊 ?
难道通过这样objEvent.addEvent 的添加事件是无法做到事件等于NULL的吗?
<!DOCTYPE HTML>
<html>
<head>
<title>soul42</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
<STYLE type="text/css">
* { margin:0; padding:0;}
#box{width:30px;margin:200px auto 0 ;display:block;position:relative;}
.wrap{margin:0;width:200px;position:absolute;top:0;left:0;overflow:hidden; background:red}
ul{position:absolute;top:0px;left:0;width:200px;}
li{height:20px;background:orange;margin-bottom:0px}
</STYLE></head>
<body>
<DIV style="POSITION: absolute; WIDTH: 50px; BACKGROUND: #f00; HEIGHT: 50px; LEFT: 0px" id="mydiv"></DIV> <script type="text/javascript">
var $ = function(id){return document.getElementById(id)}
var objEvent = {
addEvent:function(elem,type,func){
var _this = this;
if(elem.addEventListener){
elem.addEventListener(type,func,false);
}else if(elem.attachEvent){
elem.attachEvent("on"+type,func)
}else{
elem["on"+type] = func
}
},
getEvent:function(e){
return e = e|| window.event;
},
func:function(e){
e = objEvent.getEvent(e);
var posX = e.clientX - $("mydiv").offsetLeft;
(function(){
objEvent.addEvent(document,"mousemove",function(e){
e = objEvent.getEvent(e);
$("mydiv").style.left = (e.clientX - posX) +"px";
});
objEvent.addEvent(document,"mouseup",function(){
objEvent.addEvent(document,"mousemove",null);
//document.onmousemove = null;
}) /*document.onmousemove = function(e){
e = objEvent.getEvent(e);
$("mydiv").style.left = (e.clientX - posX) +"px";
}
document.onmouseup = function(e){
document.onmousemove = null;
}*/ })()
}
}
objEvent.addEvent($("mydiv"),"mousedown",objEvent.func);
</script></body>
</html>
attachEvent 是 追加处理函数,并不影响原来的处理函数
----------
document.onmousemove = null; 这个问题等再查下.
<html>
<head>
<title>soul42</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
<STYLE type="text/css">
* { margin:0; padding:0;}
#box{width:30px;margin:200px auto 0 ;display:block;position:relative;}
.wrap{margin:0;width:200px;position:absolute;top:0;left:0;overflow:hidden; background:red}
ul{position:absolute;top:0px;left:0;width:200px;}
li{height:20px;background:orange;margin-bottom:0px}
</STYLE></head>
<body>
<DIV style="POSITION: absolute; WIDTH: 50px; BACKGROUND: #f00; HEIGHT: 50px; LEFT: 0px" id="mydiv"></DIV> <script type="text/javascript">
var $ = function(id){return document.getElementById(id)}
var objEvent = {
addEvent:function(elem,type,func){
var _this = this;
if(elem.addEventListener){
elem.addEventListener(type,func,false);
}else if(elem.attachEvent){
elem.attachEvent("on"+type,func)
}else{
elem["on"+type] = func
}
},
getEvent:function(e){
return e = e|| window.event;
},
func:function(e){
e = objEvent.getEvent(e);
posX = e.clientX - $("mydiv").offsetLeft;
(function(){
objEvent.addEvent(document,"mousemove",domousemove);
objEvent.addEvent(document,"mouseup",function(){
if(document.detachEvent) document.detachEvent("onmousemove",domousemove);
else if(document.removeEventListener) document.removeEventListener("mousemove",domousemove,false);
else document.onmousemove = null;
})
})()
}
}
function domousemove(e){
e = objEvent.getEvent(e);
$("mydiv").style.left = (e.clientX - posX) +"px";
}
objEvent.addEvent($("mydiv"),"mousedown",objEvent.func);
</script></body>
</html>
<head>
<title>soul42</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
<STYLE type="text/css">
* {
margin: 0;
padding: 0;
}
#box {
width: 30px;
margin: 200px auto 0;
display: block;
position: relative;
}
.wrap {
margin: 0;
width: 200px;
position: absolute;
top: 0;
left: 0;
overflow: hidden;
background: red
}
ul {
position: absolute;
top: 0px;
left: 0;
width: 200px;
}
li {
height: 20px;
background: orange;
margin-bottom: 0px
}
</STYLE>
</head>
<body>
<DIV style="POSITION: absolute; WIDTH: 50px; BACKGROUND: #f00; HEIGHT: 50px; LEFT: 0px" id="mydiv"></DIV>
<div id="hello" style="POSITION: absolute;top:100px;">
nihao a
</div>
<script type="text/javascript">
var $ = function(id) {
return document.getElementById(id)
}
var objEvent = function(em) {
var _fn = {
addEvent : function(elem, type, func) {
var _this = this;
if(elem.addEventListener) {
elem.addEventListener(type, func, false);
} else if(elem.attachEvent) {
elem.attachEvent("on" + type, func)
} else {
elem["on" + type] = func
}
},
getEvent : function(e) {
return e = e || window.event;
},
func : function(e) {
e = _fn.getEvent(e);
posX = e.clientX - em.offsetLeft; (function() {
_fn.addEvent(document, "mousemove", _fn.domousemove);
_fn.addEvent(document, "mouseup", function() {
if(document.detachEvent)
document.detachEvent("onmousemove", _fn.domousemove);
else if(document.removeEventListener)
document.removeEventListener("mousemove", _fn.domousemove, false);
else
document.onmousemove = null;
})
})()
},
domousemove : function(e) {
e = _fn.getEvent(e);
em.style.left = (e.clientX - posX) + "px";
}
};
_fn.addEvent(em, "mousedown", _fn.func);
}
objEvent($("hello"));
objEvent($("mydiv")); </script>
</body>
</html>这种做法,可以对任意的对象添加绑定,不建议写死