javascript drag类操作多个对象时出错

mrtuzi mrtuzi 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
自己写的一个drag类,如果是一个new drag()的话,没问题.
但是如果写两个new drag..只有后面的起作用.
朋友们知道为什么吗


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>drag类</title>
</head>

<body>
<style>
#pop{width:400px;background-color:#CCCCCC; border:1px solid #000;}
#popt{border:1px solid #000; border-left:none; border-right:none; cursor:move}
#btnclost{cursor:hand;float:right}
#popm{height:300px;}
#ddd{float:left}
</style>
<div id="ddd">
222222222222222222222222
</div>

<div id="pop">
<span id="btnclost">X</span><div id="popt">标题标题标题标题标题标题</div>
<div id="popm">
内容内容内容内容内容内容内容内容内容内容内容内容
</div>
</div>
<script>
function $(o){return document.getElementById(o)}

$('btnclost').onclick=function(){$('pop').style.display='none';}
var drag=function(obj,handle){
with(this){
d=0;cache={};
no=$(obj).cloneNode(true);
if($(obj)){
o=$(obj);d=1;
hd=(!$(handle)?o:$(handle));
hd.onmousedown=function(e){
if(!e){var e=window.event}
x=$(obj).offsetLeft;
y=$(obj).offsetTop;
ow=e.clientX-x;
oh=e.clientY-y;
with(no.style){
position='absolute';
left=x+'px';
top=y+5+'px';
filter='Alpha(Opacity="30")';
}
document.body.appendChild(no);
document.onselectstart=function(){return false}
}
no.onmouseup=function(e){
if(!e){var e=window.event}
try{
document.body.removeChild(no);
with($(obj).style){
position='absolute';
left=(e.clientX-ow)+'px';
top=(e.clientY-oh)+'px';
}
}catch(err){}
d=0;document.onselectstart=function(){return true};
drag=null;
}
no.onmousemove=function(e){
if(!e){var e=window.event}
try{
with(no.style){
left=e.clientX-ow+'px';
top=e.clientY-oh+'px';
}
}catch(err){}
}
}
}}
new drag('ddd');//这个没起作用
new drag('pop');//只有这个起作用
</script>
</body>
</html>
...全文

相关推荐

评论 6
收藏 已收藏
分享
返回顶部
mrtuzi
JavaScript 87,983 成员 224,681 内容