麻烦帮忙写个拖动层排序嘛。 http://hi.baidu.com/lael80/blog/item/94da23c766c12edfd0006072.html我写的div..是可以点击切换顺序的。http://www.gzyd.net/test.html 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <!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" /> <style type="text/css">*{ margin:0px; padding:0px}body{height:500px; text-align:center;}.con{float:left;width:100px;margin:0px; height:100px; border: 1px dotted red}.con h1{font-size:12px ;font-weight:bold;height:25px;line-height:25px; background:#cbcbcb;cursor:move;}#end{visibility:hidden;}#content{width:430px;margin:20px auto;height:500px;border: 1px dashed green} </style> </head> <body><div id="content"> <div id="a1aa" class="con"><h1>a1<div>bb</div></h1></div> <div id="a2" class="con"><h1>a2</h1></div> <div id="a3" class="con"><h1>a3</h1></div> <div id="a4" class="con"><h1>A4</h1></div> <div id="a5" class="con"><h1>a5</h1></div> <div id="a6" class="con"><h1>a6</h1></div> <div id="a7" class="con"><h1>a7</h1></div> <div id="a8" class="con"><h1>a8</h1></div> <div id="a9" class="con"><h1>a9</h1></div> <div id="a10" class="con"><h1>a10</h1></div> <div id="a11" class="con"><h1>a11</h1></div> <div id="a12" class="con"><h1>a12</h1></div></div><input type="button" value="save" id="Sbt" /><input type="button" value="add" onclick="add()" /> </body></html><script type="text/javascript">function add(){ var content = document.getElementById('content'); content.innerHTML+="<div id='a13' class='con'><h1>a13</h1></div>" DragDrop_Sort($("content"),"div");}function XmouseCoords(ev){ if(ev.pageX || ev.pageY){ return {x:ev.pageX, y:ev.pageY}; } return { x:ev.clientX + document.body.scrollLeft - document.body.clientLeft, y:ev.clientY + document.body.scrollTop - document.body.clientTop };}function XgetMouseOffset(target, ev){ ev = ev || window.event; var docPos=XgetPosition(target); var mousePos = XmouseCoords(ev); return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};}function XgetPosition(e){ var left = 0; var top = 0; while(e.offsetParent){ left += e.offsetLeft; top += e.offsetTop; e= e.offsetParent; } left += e.offsetLeft; top += e.offsetTop; return {x:left, y:top};}var $=function(){return document.getElementById(arguments[0])}/*拖动时判断位置的层*/var HelperDiv=document.createElement("div"); document.body.appendChild(HelperDiv); with(HelperDiv.style){ display="none"; position="absolute"; cursor="move"; }function XCapture(o,mak){ if(mak=="start"){ if(o.setCapture){o.setCapture();} else if(window.captureEvents) {window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);} } if(mak=="end"){ if(o.releaseCapture){o.releaseCapture();} else if(window.captureEvents) {window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);} } }/*移动*/function Xmove(o,l,t){ o.style.position="absolute"; var a=1; var ol=parseInt(o.offsetLeft); var ot=parseInt(o.offsetTop); var iTimer=setInterval(function(){ if(a==10) { HelperDiv.style.display="none"; clearInterval(iTimer); } o.style.left=ol+a*(l-ol)/10+"px"; o.style.top=ot+a*(t-ot)/10+"px"; a++;},20);}function Odrag (obj) { var Xid=0;//判断是否有匹配的元素 0:无 Ł:有 var tDiv=null;//如果有匹配动态创建元素 var om={} om.sortBox=obj.getAttribute("SortBox");//sort 的容器 om.state=obj.getAttribute("state");//鼠标 状态 ŀ:up 1 :down om.obj=obj;//移动的对象 om.dragObj=obj.getAttribute("dragObj");//需要改变位置元素鼠标按下时的 esrcElement var E_X=obj.getAttribute("E_X"); var E_Y=obj.getAttribute("E_Y"); XCapture(om.obj,"start"); om.obj.onmouseup=function(){ XCapture(om.obj,"end"); om.state=0; om.obj.releaseCapture(); if(Xid==1){ tDiv.id=om.dragObj.id tDiv.innerHTML=om.obj.innerHTML; om.dragObj.parentNode.removeChild(om.dragObj); Xmove(om.obj,XgetPosition(tDiv).x,XgetPosition(tDiv).y); SetSortObj(tDiv); } if(Xid==0){ om.dragObj.style.display="block"; Xmove(om.obj,XgetPosition(om.dragObj).x,XgetPosition(om.dragObj).y); } return ; } document.body.onmousemove=function(e){ var e=e||window.event; if(om.state==1){ om.obj.style.left=XmouseCoords(e).x-E_X+"px"; om.obj.style.top=XmouseCoords(e).y-E_Y+"px"; var C_Y=XmouseCoords(e).y; var C_X=XmouseCoords(e).x; var oX=CheckPos (C_X,C_Y,GetPos(om.dragObj)); if(oX!=undefined){ if(Xid==0){ tDiv=document.createElement("div"); tDiv.className="con"; tDiv.innerHTML="" tDiv.setAttribute("target",oX.obj); Xid=1; oX.obj.parentNode.insertBefore(tDiv,oX.obj); } } else{ if(Xid==1){ tDiv.getAttribute("target").style.display="block"; tDiv.parentNode.removeChild(tDiv); tDiv=null; } Xid=0; } } }}/*设置被拖动元素在点击事件发生时记录的信息*/function SetSortObj(obj,box) { obj.setAttribute("isDrag","Sort") obj.onmousedown=function(e){ var e=e||window.event; HelperDiv.style.position="absolute"; this.style.display="none"; HelperDiv.style.display="block"; HelperDiv.innerHTML=obj.innerHTML; HelperDiv.setAttribute("className","con"); HelperDiv.style.left=XgetPosition(this).x+"px"; HelperDiv.style.top=XgetPosition(this).y+"px"; HelperDiv.setAttribute("state",1); HelperDiv.setAttribute("dragObj",obj); HelperDiv.setAttribute("E_X",XgetMouseOffset(this,e).x); HelperDiv.setAttribute("E_Y",XgetMouseOffset(this,e).y); HelperDiv.setAttribute("SortBox",box); Odrag(HelperDiv); }}/*得到容器内的所有节点的坐标*/function GetPos (o) { var Xlen=o.parentNode.getElementsByTagName("div"); var temp={}; for(var i=0;i<Xlen.length;i++){ if(Xlen[i].className=="con"&&Xlen[i]!=o){ var te=Xlen[i]; temp[te.id]={ left:XgetPosition(te).x, top:XgetPosition(te).y, pos:i+1, obj:te } } } return temp;}/*用当前鼠标坐标通容器内所有节点的坐标对比如果在范围内返回相关信息 */function CheckPos (x,y,args) { for(var o in args){ var a=args[o] if(a.left<x&&a.top<y&&a.left+a.obj.offsetWidth-20>x&&a.top+a.obj.offsetHeight-20>y){ return a; } }}/*开始---设置容器 拖动对象*/function DragDrop_Sort(box,target){ var sortDiv=box.getElementsByTagName(target); for(var i=0;i<sortDiv.length;i++){ SetSortObj(sortDiv[i],box); } }/*设置容器内元素的位置*///DragDrop_Sort($("content"),"div");$("Sbt").onclick=function(){ alert('a'); var temp=[]; var xx=$("content").getElementsByTagName("div"); for(var i=0;i<xx.length;i++){ xx[i].setAttribute("pos",i+1); temp.push("id:"+xx[i].id+" pos:"+xx[i].getAttribute("pos")+"\n"); } alert(temp);}</script>像这种,但这种代码我放到我项目里,会出问题。。我也不知道,报了一堆错误。。因为项目页里引用了prototype.js这个的,把上面的放进出就出错了我想用发帖的那种改。谢谢 楼主参考这个http://www.zuoxinwu.com/UserFiles/Demo-MoveableDiv.html 请问Javascript有菜单吗 刚开始学EXTJS4.0, 有个地方不明白,求指点 ASP+JS联动下拉菜单 文字颜色不变么? JavaScript 宽屏和 下拉框 问题 ,着急,谢谢 请教一个innerHTML的引号嵌套问题 Ajax 读取XML 问题!!! 求全面数组转换为树算法 升角,再散分。 iframe中的打印问题 新手求助:本人在做一个兑奖功能,若输入的数据错误次数超过5次,则不能继续操作 页面大小
<!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" />
<style type="text/css">
*{ margin:0px; padding:0px}
body{height:500px; text-align:center;}
.con{float:left;width:100px;margin:0px; height:100px; border: 1px dotted red}
.con h1{font-size:12px ;font-weight:bold;height:25px;line-height:25px; background:#cbcbcb;cursor:move;}
#end{visibility:hidden;}
#content{width:430px;margin:20px auto;height:500px;border: 1px dashed green}
</style> </head>
<body>
<div id="content">
<div id="a1aa" class="con"><h1>a1<div>bb</div></h1></div>
<div id="a2" class="con"><h1>a2</h1></div>
<div id="a3" class="con"><h1>a3</h1></div>
<div id="a4" class="con"><h1>A4</h1></div>
<div id="a5" class="con"><h1>a5</h1></div>
<div id="a6" class="con"><h1>a6</h1></div>
<div id="a7" class="con"><h1>a7</h1></div>
<div id="a8" class="con"><h1>a8</h1></div>
<div id="a9" class="con"><h1>a9</h1></div>
<div id="a10" class="con"><h1>a10</h1></div>
<div id="a11" class="con"><h1>a11</h1></div>
<div id="a12" class="con"><h1>a12</h1></div>
</div>
<input type="button" value="save" id="Sbt" />
<input type="button" value="add" onclick="add()" />
</body>
</html>
<script type="text/javascript">
function add(){
var content = document.getElementById('content');
content.innerHTML+="<div id='a13' class='con'><h1>a13</h1></div>"
DragDrop_Sort($("content"),"div");
}
function XmouseCoords(ev){
if(ev.pageX || ev.pageY){
return {x:ev.pageX, y:ev.pageY};
}
return {
x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
y:ev.clientY + document.body.scrollTop - document.body.clientTop
};
}
function XgetMouseOffset(target, ev){
ev = ev || window.event; var docPos=XgetPosition(target);
var mousePos = XmouseCoords(ev);
return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
}function XgetPosition(e){ var left = 0;
var top = 0; while(e.offsetParent){
left += e.offsetLeft;
top += e.offsetTop;
e= e.offsetParent;
} left += e.offsetLeft;
top += e.offsetTop; return {x:left, y:top};
}
var $=function(){return document.getElementById(arguments[0])
}/*拖动时判断位置的层*/
var HelperDiv=document.createElement("div");
document.body.appendChild(HelperDiv);
with(HelperDiv.style){
display="none";
position="absolute";
cursor="move";
}
function XCapture(o,mak){
if(mak=="start"){
if(o.setCapture){o.setCapture();}
else if(window.captureEvents)
{window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);}
}
if(mak=="end"){
if(o.releaseCapture){o.releaseCapture();}
else if(window.captureEvents)
{window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);}
}
}
/*移动*/
function Xmove(o,l,t){
o.style.position="absolute";
var a=1;
var ol=parseInt(o.offsetLeft);
var ot=parseInt(o.offsetTop);
var iTimer=setInterval(function(){
if(a==10)
{ HelperDiv.style.display="none";
clearInterval(iTimer);
}
o.style.left=ol+a*(l-ol)/10+"px";
o.style.top=ot+a*(t-ot)/10+"px";
a++;
},20);
}
function Odrag (obj) {
var Xid=0;//判断是否有匹配的元素 0:无 Ł:有
var tDiv=null;//如果有匹配动态创建元素
var om={}
om.sortBox=obj.getAttribute("SortBox");//sort 的容器
om.state=obj.getAttribute("state");//鼠标 状态 ŀ:up 1 :down
om.obj=obj;//移动的对象
om.dragObj=obj.getAttribute("dragObj");//需要改变位置元素鼠标按下时的 esrcElement
var E_X=obj.getAttribute("E_X");
var E_Y=obj.getAttribute("E_Y"); XCapture(om.obj,"start");
om.obj.onmouseup=function(){
XCapture(om.obj,"end");
om.state=0;
om.obj.releaseCapture();
if(Xid==1){
tDiv.id=om.dragObj.id
tDiv.innerHTML=om.obj.innerHTML;
om.dragObj.parentNode.removeChild(om.dragObj);
Xmove(om.obj,XgetPosition(tDiv).x,XgetPosition(tDiv).y);
SetSortObj(tDiv);
}
if(Xid==0){
om.dragObj.style.display="block";
Xmove(om.obj,XgetPosition(om.dragObj).x,XgetPosition(om.dragObj).y);
}
return ;
}
document.body.onmousemove=function(e){
var e=e||window.event;
if(om.state==1){
om.obj.style.left=XmouseCoords(e).x-E_X+"px";
om.obj.style.top=XmouseCoords(e).y-E_Y+"px";
var C_Y=XmouseCoords(e).y;
var C_X=XmouseCoords(e).x;
var oX=CheckPos (C_X,C_Y,GetPos(om.dragObj));
if(oX!=undefined){ if(Xid==0){
tDiv=document.createElement("div");
tDiv.className="con";
tDiv.innerHTML=""
tDiv.setAttribute("target",oX.obj);
Xid=1;
oX.obj.parentNode.insertBefore(tDiv,oX.obj);
}
}
else{
if(Xid==1){
tDiv.getAttribute("target").style.display="block";
tDiv.parentNode.removeChild(tDiv);
tDiv=null;
}
Xid=0;
}
}
}
}
/*设置被拖动元素在点击事件发生时记录的信息*/
function SetSortObj(obj,box) {
obj.setAttribute("isDrag","Sort")
obj.onmousedown=function(e){
var e=e||window.event;
HelperDiv.style.position="absolute";
this.style.display="none";
HelperDiv.style.display="block";
HelperDiv.innerHTML=obj.innerHTML;
HelperDiv.setAttribute("className","con");
HelperDiv.style.left=XgetPosition(this).x+"px";
HelperDiv.style.top=XgetPosition(this).y+"px";
HelperDiv.setAttribute("state",1);
HelperDiv.setAttribute("dragObj",obj);
HelperDiv.setAttribute("E_X",XgetMouseOffset(this,e).x);
HelperDiv.setAttribute("E_Y",XgetMouseOffset(this,e).y);
HelperDiv.setAttribute("SortBox",box);
Odrag(HelperDiv);
}}
/*得到容器内的所有节点的坐标*/
function GetPos (o) {
var Xlen=o.parentNode.getElementsByTagName("div");
var temp={};
for(var i=0;i<Xlen.length;i++){
if(Xlen[i].className=="con"&&Xlen[i]!=o){
var te=Xlen[i];
temp[te.id]={
left:XgetPosition(te).x,
top:XgetPosition(te).y,
pos:i+1,
obj:te
}
}
}
return temp;
}
/*用当前鼠标坐标通容器内所有节点的坐标对比如果在范围内返回相关信息 */
function CheckPos (x,y,args) {
for(var o in args){
var a=args[o]
if(a.left<x&&a.top<y&&a.left+a.obj.offsetWidth-20>x&&a.top+a.obj.offsetHeight-20>y){
return a;
}
}
}
/*开始---设置容器 拖动对象*/
function DragDrop_Sort(box,target){
var sortDiv=box.getElementsByTagName(target);
for(var i=0;i<sortDiv.length;i++){
SetSortObj(sortDiv[i],box);
}
}
/*设置容器内元素的位置*/
//DragDrop_Sort($("content"),"div");
$("Sbt").onclick=function(){
alert('a');
var temp=[];
var xx=$("content").getElementsByTagName("div");
for(var i=0;i<xx.length;i++){
xx[i].setAttribute("pos",i+1);
temp.push("id:"+xx[i].id+" pos:"+xx[i].getAttribute("pos")+"\n");
}
alert(temp);}
</script>
像这种,但这种代码我放到我项目里,会出问题。。我也不知道,报了一堆错误。。因为项目页里引用了prototype.js这个的,把上面的放进出就出错了我想用发帖的那种改。谢谢
http://www.zuoxinwu.com/UserFiles/Demo-MoveableDiv.html