<div class="draggable" style="position:absolute; width:100px; height:100px; background-color:#FF0000"></div>
<script type="text/javascript">
var eventUtil={
addHandler: function(element,type,handler){
if(element.addEventListener){
element.addEventListener(type,handler,false);
}else if(element.attachEvent){
element.attachEvent("on" + type, handler);
}else{
element["on" + type] = handler;
}
},
getEvent:function(event){
return event ? event : window.event;
},
getTarget:function(event){
return event.target || event.srcElement;
}, removeHandler: function(element,type,handler){
if(element.removeEventListener){
element.removeEventListener(type,handler,false);
}else if(element.detachEvent){
element.detachEvent("on" + type,handler);
}else{
element["on" + type] = null;
}
}
};//
var DragDorp = function(){
var dragging = null;
var diffX = 0;
var diffY = 0;
function handleEvent(event){
//获取事件和目标
event = eventUtil.getEvent(event);
var target = eventUtil.getTarget(event);
//确定事件类型
switch(event.type){
case "mousedown":
if(target.className.indexOf('draggable') > -1){
dragging = target;
diffX = event.clientX - target.offsetLeft;
diffY = event.clientY - target.offsetTop;
}
break;
case "mousemove":
if(dragging != null){
event = eventUtil.getEvent(event);
dragging.style.left = (event.clientX - diffX) + "px";
dragging.style.top = (event.clientY - diffY) + "px";
}
break;
case "mouseup":
dragging = null;
break;
}
};
return {
enable: function(){
eventUtil.addHandler(document,"mousedown",handleEvent);
eventUtil.addHandler(document,"mousemove",handleEvent);
eventUtil.addHandler(document,"mouseup",handleEvent);
},
disable: function(){
eventUtil.removeHandler(document,"mousedown",handleEvent);
eventUtil.removeHandler(document,"mousemove",handleEvent);
eventUtil.removeHandler(document,"mouseup",handleEvent);
}
}}();DragDorp.enable();</script>求解代码倒数第三行的()是怎么回事,然后倒数第二行的用法是怎么回事。javascript
<script type="text/javascript">
var eventUtil={
addHandler: function(element,type,handler){
if(element.addEventListener){
element.addEventListener(type,handler,false);
}else if(element.attachEvent){
element.attachEvent("on" + type, handler);
}else{
element["on" + type] = handler;
}
},
getEvent:function(event){
return event ? event : window.event;
},
getTarget:function(event){
return event.target || event.srcElement;
}, removeHandler: function(element,type,handler){
if(element.removeEventListener){
element.removeEventListener(type,handler,false);
}else if(element.detachEvent){
element.detachEvent("on" + type,handler);
}else{
element["on" + type] = null;
}
}
};//
var DragDorp = function(){
var dragging = null;
var diffX = 0;
var diffY = 0;
function handleEvent(event){
//获取事件和目标
event = eventUtil.getEvent(event);
var target = eventUtil.getTarget(event);
//确定事件类型
switch(event.type){
case "mousedown":
if(target.className.indexOf('draggable') > -1){
dragging = target;
diffX = event.clientX - target.offsetLeft;
diffY = event.clientY - target.offsetTop;
}
break;
case "mousemove":
if(dragging != null){
event = eventUtil.getEvent(event);
dragging.style.left = (event.clientX - diffX) + "px";
dragging.style.top = (event.clientY - diffY) + "px";
}
break;
case "mouseup":
dragging = null;
break;
}
};
return {
enable: function(){
eventUtil.addHandler(document,"mousedown",handleEvent);
eventUtil.addHandler(document,"mousemove",handleEvent);
eventUtil.addHandler(document,"mouseup",handleEvent);
},
disable: function(){
eventUtil.removeHandler(document,"mousedown",handleEvent);
eventUtil.removeHandler(document,"mousemove",handleEvent);
eventUtil.removeHandler(document,"mouseup",handleEvent);
}
}}();DragDorp.enable();</script>求解代码倒数第三行的()是怎么回事,然后倒数第二行的用法是怎么回事。javascript
解决方案 »
- 如何用jquery选择父节点下的第一代子节点
- 关于JS动态改变页面而不跳转新页面的问题
- 菜鸟求问:百度中的搜索层怎么实现的?
- 高分急求opener.document动态添加父窗口表格的问题
- 请高手出手解决一下这个 函数,在线等!谢
- 高分求助,在iframe里提交的数据如何通过javascript截取下来
- 如何用javascript读取xml一节点的属性值?
- 问一个document.execCommand('Undo')问题,有点头疼哦
- 高分相赠,请高手帮忙!!!(急)
- 我不会正则表达式!!!请问这个怎么写!!!Easy!!
- $(document).scrollLeft和document.documentElement.scrollLeft的区别
- 代码段有错,编译时却忽略了错误且页面上不显示错误
}
声明了个函数。var eventUtil={
}();
马上执行它
var DragDorp = function(){
}();
意思还是那个意思。
这里可以理解为对象了。
return 100;
}();
alert(a);
比如:你去写一个函数但是又想马上运行
一般的是
function aa(){
//code here
}
aa();
而且这个函数就运行一次,以后就不需要啦,那你可以写成这样
function (){
//code here
}();
但是如果是在js里面语法不通过,为了让编译通过
(function(){
//code here
})();
或者
(function(){
//code here
}());
这两种都可以;
但是你的这种情况呢是属于给变量赋值,所以不叫那个括号也没问题
var aa=function(){
return "aa";
}();
相当于var aa="aa";因为赋值符号后面的是一个自运行的函数啦
倒数第二行的意思,现在就好解释啦,因为return是一个对象
类比刚才我给的例子:
var DragDorp= {
enable: function(){
eventUtil.addHandler(document,"mousedown",handleEvent);
eventUtil.addHandler(document,"mousemove",handleEvent);
eventUtil.addHandler(document,"mouseup",handleEvent);
},
disable: function(){
eventUtil.removeHandler(document,"mousedown",handleEvent);
eventUtil.removeHandler(document,"mousemove",handleEvent);
eventUtil.removeHandler(document,"mouseup",handleEvent);
}
};
所以你倒数第二行应该是
DragDorp.enable();
也就是调用enable方法啦