js表格拖拽

Posted aSnow

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js表格拖拽相关的知识,希望对你有一定的参考价值。

html部分

<div id="chenkbox">
<div id="tableSort">
    <ol>
          <li> 序列 </li>
          <li> 名称 </li>
          <li> 数量 </li>
          <li> 单价(Q点) </li>
          <li> 总计(Q点) </li>
     </ol>
    <ul>
          <li>1</li>
          <li>农场话费A</li>
          <li>2</li>
          <li>50</li>
          <li>100</li>
        </ul>
    <ul>
          <li>2</li>
          <li>飞车道具C</li>
          <li>1</li>
          <li>80</li>
          <li>80</li>
        </ul>
    <ul>
          <li>3</li>
          <li>空间K</li>
          <li>1</li>
          <li>120</li>
          <li>120</li>
        </ul>
    <ul>
          <li>4</li>
          <li>农场狗粮C</li>
          <li>4</li>
          <li>60</li>
          <li>240</li>
        </ul>
    <ul>
          <li>5</li>
          <li>音速种子</li>
          <li>2</li>
          <li>110</li>
          <li>220</li>
        </ul>
    <ul>
          <li>6</li>
          <li>农场化肥D</li>
          <li>5</li>
          <li>60</li>
          <li>300</li>
        </ul>
    <ul>
          <li>7</li>
          <li>AVA装扮C</li>
          <li>1</li>
          <li>300</li>
          <li>300</li>
        </ul>
    <ul>
          <li>8</li>
          <li>三国道具C</li>
          <li>15</li>
          <li>60</li>
          <li>900</li>
        </ul>
    <ul>
          <li>9</li>
          <li>DNF道具B</li>
          <li>4</li>
          <li>300</li>
          <li>1200</li>
        </ul>
    <ul>
          <li>10</li>
          <li>农场化肥H</li>
          <li>6</li>
          <li>80</li>
          <li>120</li>
        </ul>
    <ul>
          <li>11</li>
          <li>农场化肥B</li>
          <li>1</li>
          <li>80</li>
          <li>80</li>
        </ul>
    <ul>
          <li>12</li>
          <li>Q宠元宝</li>
          <li>100</li>
          <li>1</li>
          <li>100</li>
        </ul>
    <ul>
          <li>13</li>
          <li>三国道具K</li>
          <li>9</li>
          <li>20</li>
          <li>180</li>
        </ul>


 <div id="box"></div>
  </div>
</div>

css部分

* {
    margin: 0;
    padding: 0;
}
body {
    font-family: "microsoft yahei";
    background-color: #eee;
    user-select: none;
}
#chenkbox {
    margin: 100px auto;
    width: 800px;
    position: relative;

    
}
#tableSort{
    border-right:#0066cc 1px solid;
    border-bottom: #0066cc 1px solid;
    height: 434px;
}

li{
    list-style: none;
}
#box {
    position: absolute;
    display: none;
    background: #fff;
    text-align: center;
    top: 0;
    background-color: #000;
    background-color: rgba(0,0,0,0.8);
    color: #fff;
    height: 100%;
    cursor: move;
}
#box p {
    line-height: 2;
}
#chenkbox ol{
    height: 30px;
    line-height: 30px;
}
#chenkbox ul{
    width: 100%;
    height: 30px;
    cursor: move;
    line-height: 30px;
    
}
#chenkbox li{
    width: 19.87%;
    float: left;
    
    border-top: #0066cc 1px solid;
   border-left: #0066cc 1px solid;
   text-align: center;

}

js部分

var ochek=document.getElementById("chenkbox");
    var ul=document.getElementsByTagName(\'ul\');
     var  box=document.getElementById("box");
     var arr=[];
    for(var i=0;i<ul.length;i++){
        ul[i].onmousedown=function(){
           var e=e||window.event;
           var w=this.offsetWidth;
           var h=this.offsetHeight;
           var t=ochek.offsetTop;
           var st=this.offsetTop;
           var ss=this.innerHTML;
             _this=this;//鼠标按下时的ul
           box.innerHTML=ss;
           box.style.display="block";
           box.style.width=w+"px";
           box.style.height=h+"px";
           box.style.top=st+"px";
          for(var j=0;j<ul.length;j++){
                  arr.push(ul[j].offsetTop);//所有行的top值
          }
           document.onmousemove=function(e){
                      var e=e||window.event;
                      box.style.top=e.clientY-t+"px";  //移动时的top值 
                  }
                   document.onmouseup=function(e){
                     var e=e||window.event;
                     var index=\'\';
                      for(var j=0;j<arr.length;j++){
                          if(arr[j]<e.clientY-t){//得到当移动的top值大于ul的top值时的i
                              index=j;  
                          }
                      }  
                     _this.innerHTML=ul[index].innerHTML;//鼠标按下时的ul的innerHTML等于移动到的ul的innerHTML
                     ul[index].innerHTML= box.innerHTML;//移动到的ul的innerHTML等于box中的innerHTML
                     arr.splice(0,arr.length);//清空数组
                      box.style.display="none";
                     box.innerHTML=\'\';    
                     ul[i].onmousedown=null;
                     document.onmousemove=null;

                  }
        }
    }

以上是关于js表格拖拽的主要内容,如果未能解决你的问题,请参考以下文章

js表格拖拽

angualr项目table拖拽列宽效果

帆软怎么实现报表的排序,隐藏,拖拽

利用插件(jQuery-ui.js)实现表格行的拖拽排序

vue+element 使用sortable实现表格拖拽

简单拖拽即生成网页 VvvebJs