自己写的一个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>
但是如果写两个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>
解决方案 »
- onresize IE下多次执行的问题 请大牛赐教
- 关于js操作table的tr td 找到答案就结贴
- 缺少对象怎么解决
- padding-left 跟cellpadding什么区别
- 100分求一段JS代码-修改表格中单元格的内容(在线等马上兑现)
- 网页内容显示不全,请各位帮忙分析一下原因好吗,很急,万分感谢!
- 如何在页面中填写单价和数量,自动生成合计
- encodeURI函数的用法及参数
- 读 txt 文件,
- Action json jsp传值
- javascript中的upvalue是什么意思啊,恳求各位大侠帮菜鸟解释一下吧,谢谢了!
- 网页调用mediaplayer控件播放音乐如何通知本地的应用程序?
a = 1;
b = 2;
}alert(obj.a);你认为with中赋值了obj.a,会输出1?自己测试一下吧。
但是如果我这么写的话,好像正常了.var obj = function(){
this.a=0;
this.b=0;
with(this){
a = 1;
b = 2;
}
}var n=new obj();
alert(n.b);结果输出2
this.b=0;
这样写才是对象里的属性.
如果写a,b这是定义全局变量了.不是对象里的属性了.
<!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" style="width:200px;height:200px;border:1px solid;background-color:#CCCCCC;cursor:move">
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){ this.d=0;this.cache={};
this.no=$(obj).cloneNode(true);
if($(obj)){
this.o=$(obj);this.d=1;
this.hd=(!$(handle)?this.o:$(handle));
this.hd.onmousedown=(function(e,no){
return 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}
}
}
)(window.event,this.no)
this.no.onmouseup=function(e){
if(!e){var e=window.event}
try{
document.body.removeChild(this);
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;
}
this.no.onmousemove=function(e){
if(!e){var e=window.event}
try{
with(this.style){
left=e.clientX-ow+'px';
top=e.clientY-oh+'px';
}
}catch(err){}
}}}
new drag('ddd');//这个没起作用
new drag('pop','popt');//只有这个起作用
</script>
</body>
</html>
看看这个吧
看来我还得继续学习哈.with和this的用法还不怎么行.