zoukankan      html  css  js  c++  java
  • 表格中的行拖动

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <HTML>
    <HEAD>
    <META http-equiv="Content-Type" content="text/html; charset=gb2312">
    <TITLE>拖动</TITLE>
    <STYLE>
    td{20%; height:20px; border-bottom:1px solid black;border-right:1px solid black;cursor:default;}
    div{font-size:13px;}
    th{height:20px;font-size:12px;font-weight:normal;border-bottom:2px solid black;background-color:#CCCCCC}
    table{border:1px solid black;font-size:13px;}
    </STYLE>
    <script type="text/javascript">
    /************************************ dragedTableData.js *******************************/
    /************************************ dragedTableData.js *******************************/
        /*
        * created by LxcJie 2004.4.12
        * 可以实现表格内容的内部拖动
        * 确保中间过度层的存在,id为指定
        */
        /*--------全局变量-----------*/
        var dragedTable_x0,dragedTable_y0,dragedTable_x1,dragedTable_y1;
        var dragedTable_movable = false;
        var dragedTable_preCell = null;
        var dragedTable_normalColor = null;
        //起始单元格的颜色
        var dragedTable_preColor = "lavender";
        //目标单元格的颜色
        var dragedTable_endColor = "#FFCCFF";
        var dragedTable_movedDiv = "dragedTable_movedDiv";
        var dragedTable_tableId = "";
        /*--------全局变量-----------*/

        function DragedTable(tableId)
        {
         dragedTable_tableId = tableId;
         var oTempDiv = document.createElement("div");
         oTempDiv.id = dragedTable_movedDiv;
         oTempDiv.onselectstart = function(){return false};
         oTempDiv.style.cursor = "hand";
         oTempDiv.style.position = "absolute";
         oTempDiv.style.border = "1px solid black";
         oTempDiv.style.backgroundColor = dragedTable_endColor;
         oTempDiv.style.display = "none";
         document.body.appendChild(oTempDiv);
         document.all(tableId).onmousedown = showDiv;
        }

        //得到控件的绝对位置
        function getPos(cell)
        {
         var pos = new Array();
         var t=cell.offsetTop;
         var l=cell.offsetLeft;
         while(cell=cell.offsetParent)
         {
         t+=cell.offsetTop;
         l+=cell.offsetLeft;
         }
         pos[0] = t;
         pos[1] = l;
         return pos;
        }
       
        //显示图层
        function showDiv()
        {
         var obj = event.srcElement;
         var pos = new Array();
         //获取过度图层
         var oDiv = document.all(dragedTable_movedDiv);
         if(obj.tagName.toLowerCase() == "td")
         {
          obj = obj.parentElement;
          //alert(obj.tagName);
          obj.style.cursor = "hand";
          pos = getPos(obj);
          //计算中间过度层位置,赋值
          oDiv.style.width = obj.offsetWidth;
          oDiv.style.height = obj.offsetHeight;
          oDiv.style.top = pos[0];
          oDiv.style.left = pos[1];
          oDiv.innerHTML = "<table><tr>"+obj.innerHTML+"</tr></table>";
          //alert(oDiv.innerHTML);
          oDiv.style.display = "";
          dragedTable_x0 = pos[1];
          dragedTable_y0 = pos[0];
          dragedTable_x1 = event.clientX;
          dragedTable_y1 = event.clientY;
          //记住原td
          dragedTable_normalColor = obj.style.backgroundColor;
          obj.style.backgroundColor = dragedTable_preColor;
          dragedTable_preCell = obj;
         
          dragedTable_movable = true;
         }
        }
       function dragDiv()
       {
        if(dragedTable_movable)
        {
         var oDiv = document.all(dragedTable_movedDiv);
         var pos = new Array();
         oDiv.style.top = event.clientY - dragedTable_y1 + dragedTable_y0;
         oDiv.style.left = event.clientX - dragedTable_x1 + dragedTable_x0;
         var oTable = document.all(dragedTable_tableId);
         for(var i=0; i<oTable.rows.length; i++)
         {
          if(oTable.rows[i].tagName.toLowerCase() == "tr")
          {
           pos = getPos(oTable.rows[i]);
           if(event.x>pos[1]&&event.x<pos[1]+oTable.cells[i].offsetWidth
           && event.y>pos[0]&& event.y<pos[0]+oTable.cells[i].offsetHeight)
           {
            if(oTable.rows[i] != dragedTable_preCell)
            oTable.rows[i].style.backgroundColor = dragedTable_endColor;
           }
           else
           {
            if(oTable.rows[i] != dragedTable_preCell)
             oTable.rows[i].style.backgroundColor = dragedTable_normalColor;
           }
          }
         }
        }
       }

       function hideDiv()
       {
        if(dragedTable_movable)
        {
         var oTable = document.all(dragedTable_tableId);
         var pos = new Array();
         if(dragedTable_preCell != null)
         {
          for(var i=0; i<oTable.rows.length; i++)
          {
           pos = getPos(oTable.rows[i]);
           //alert(pos.length);
           //计算鼠标位置,是否在某个单元格的范围之内
           if(event.x>pos[1]&&event.x<pos[1]+oTable.rows[i].offsetWidth
           && event.y>pos[0]&& event.y<pos[0]+oTable.rows[i].offsetHeight)
           {
            if(oTable.rows[i].tagName.toLowerCase() == "tr")
            {
             var obj = oTable.rows[i];
             var _len = obj.cells.length;
             //alert(_len);
             var _cell ;
        
             for(var i=0;i<_len;i++){
              //_cell = document.createElement("td");
              //_cell.innerText = obj.cells[i].innerText;
              //alert(obj.cells[i].innerText);
              //dragedTable_preCell.appendChild(_cell);
              dragedTable_preCell.cells[i].innerText = obj.cells[i].innerText;
              //obj.cells[i].innerText = dragedTable_movedDiv.cells[i].innerText;
             }
             //var content = document.all(dragedTable_movedDiv).innerHTML;
             //alert(document.all(dragedTable_movedDiv).firstChild.rows.length);
             var temp = document.all(dragedTable_movedDiv).firstChild.rows[0];
             _len = temp.cells.length;
             for(var j=0;j<_len;j++){
              obj.cells[j].innerText = temp.cells[j].innerText;
             }
             document.all(dragedTable_movedDiv).innerHTML = "";
             //alert(document.all(dragedTable_movedDiv).innerHTML);
             //alert(dragedTable_preCell.innerHTML);
             //oTable.rows[dragedTable_preCell.rowIndex].innerHTML =" klkldsskdl";
             //obj.innerHTML = "<td>"+document.all(dragedTable_movedDiv).innerHTML;
            
             /*
             //交换文本
             dragedTable_preCell.innerHTML = oTable.cells[i].innerHTML;
             oTable.cells[i].innerHTML = document.all(dragedTable_movedDiv).innerHTML;
             */
             //清除原单元格和目标单元格的样式
             dragedTable_preCell.style.backgroundColor = dragedTable_normalColor;
             oTable.rows[i].style.backgroundColor = dragedTable_normalColor;
             oTable.rows[i].style.cursor = "";
             dragedTable_preCell.style.cursor = "";
             dragedTable_preCell.style.backgroundColor = dragedTable_normalColor;
             break;
            }
           }
          }
         }
         dragedTable_movable = false;
         //清除提示图层
         document.all(dragedTable_movedDiv).style.display = "none";
        }
       }

       document.onmouseup = function()
       {
        hideDiv();
        var oTable = document.all(dragedTable_tableId);
        for(var i=0; i<oTable.rows.length; i++)
        oTable.rows[i].style.backgroundColor = dragedTable_normalColor;
       }

       document.onmousemove = function()
       {
        dragDiv();
       }

    /************************************ dragedTableData.js 结束 *******************************/
    /************************************ dragedTableData.js 结束 *******************************/
    </script>
    <script type="text/javascript">
       function init()
       {
        //注册可拖拽表格
        new DragedTable("tableId");
       }
    </script>
    </HEAD>
    <BODY oncontextmenu="return false;" onload="init()">
    <TABLE id="tableId" width="70%" align="center" cellpadding="0" cellspacing="0">
    <TR height="20px">
    <TH colspan="4" style="">拖动交换单元格内容</TH>
    </TR>
    <TR height="20px">
    <TD>Java</TD>
    <TD>Java One </TD>
    <TD>JBuilder</TD>
    <TD>Stuts</TD>
    </TR>
    <TR height="20px">
    <TD>C++</TD>
    <TD>Visual Studio</TD>
    <TD>Office</TD>
    <TD>Windows</TD>
    </TR>
    <TR height="30px">
    <TD>PhotoShop</TD>
    <TD>Java</TD>
    <TD>Illustrator</TD>
    <TD>PageMaker</TD>
    </TR>
    <TR height="30px">
    <TD>Cartoon</TD>
    <TD>Telephone</TD>
    <TD>China</TD>
    <TD>USA</TD>
    </TR>
    <TR height="30px">
    <TD>Java</TD>
    <TD>Java One </TD>
    <TD>JBuilder</TD>
    <TD>Stuts</TD>
    </TR>
    <TR height="30px">
    <TD>C++</TD>
    <TD>Visual Studio</TD>
    <TD>Office</TD>
    <TD>Windows</TD>
    </TR>
    <TR height="30px">
    <TD>PhotoShop</TD>
    <TD>Flash</TD>
    <TD>Illustrator</TD>
    <TD>PageMaker</TD>
    </TR>
    <TR height="30px">
    <TD>Cartoon</TD>
    <TD>Telephone</TD>
    <TD>China</TD>
    <TD>USA</TD>
    </TR>
    </TABLE>
    </BODY>
    </HTML>

  • 相关阅读:
    jchdl
    jchdl
    UVa 10256 (判断两个凸包相离) The Great Divide
    UVa 11168 (凸包+点到直线距离) Airport
    LA 2572 (求可见圆盘的数量) Kanazawa
    UVa 10652 (简单凸包) Board Wrapping
    UVa 12304 (6个二维几何问题合集) 2D Geometry 110 in 1!
    UVa 10674 (求两圆公切线) Tangents
    UVa 11796 Dog Distance
    LA 3263 (平面图的欧拉定理) That Nice Euler Circuit
  • 原文地址:https://www.cnblogs.com/xinzhuangzi/p/4100509.html
Copyright © 2011-2022 走看看