I Try Do

js table拖动排序

  1. table添加类.draggable-items
  2. 将可拖动的tr写到tbody
  3. 添加下面js
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    var cloneEl = null
    var currentDragEl = null
    var parentNode = document.querySelector('.draggable-items tbody')
    var trs = parentNode.querySelectorAll('tr')
    trs.forEach(function (el, index) {
    el.setAttribute('draggable', true)
    el.orSeq = index
    el.index = index

    el.onmousedown = function (event) {
    cloneEl = el.cloneNode(true)
    parentNode.insertBefore(cloneEl, el)
    cloneEl.index = el.index
    el.style.display = 'none'
    currentDragEl = el

    cloneEl.onmouseup = currentDragEl.onmouseup = function (event) {
    currentDragEl.index = cloneEl.index
    parentNode.removeChild(currentDragEl)
    parentNode.insertBefore(currentDragEl, cloneEl)
    parentNode.removeChild(cloneEl)
    currentDragEl.style.display = 'table-row'
    }
    }

    el.ondragover = function (event) {
    var nowElIndex = el.index
    if (el.index > cloneEl.index) {
    parentNode.removeChild(cloneEl)
    for (let i = cloneEl.index + 1; i <= el.index; i++) {
    el.index = el.index - 1
    }
    if (parentNode.lastChild === el) {
    parentNode.appendChild(cloneEl)
    } else {
    parentNode.insertBefore(cloneEl, el.nextSibling)
    }
    cloneEl.index = nowElIndex
    } else if (el.index < cloneEl.index) {
    for (let i = el.index; i < cloneEl.index; i++) {
    el.index = el.index + 1
    }
    parentNode.removeChild(cloneEl)
    parentNode.insertBefore(cloneEl, el)
    cloneEl.index = nowElIndex
    }
    }
    })