如何更新拖放列表中的值?

6tqwzwtp  于 2021-09-13  发布在  Java
关注(0)|答案(1)|浏览(332)

下面是通过数据库查找生成的列表的屏幕截图:

正如你所看到的,列表仅仅是每个玩家在其位置上的排名。
我希望能够拖放每个框来切换列表中的玩家位置。在网上学习了一些教程之后,我能够做到这一点。请参见下图:

然而,我遇到的问题是,当我在名单上上下移动球员时,我还需要更新位置排名(第一列);如你所见,例如,patrick mahomes最初是第3位,但当我将他移到第一位时,该列不会更新。
有什么帮助或建议吗?先谢谢你。到目前为止,我掌握的代码是:

<script>
document.addEventListener('DOMContentLoaded', (event) => {

  var dragSrcEl = null;

  function handleDragStart(e) {
    this.style.opacity = '0.4';

    dragSrcEl = this;

    e.dataTransfer.effectAllowed = 'move';
    e.dataTransfer.setData('text/html', this.innerHTML);
  }

  function handleDragOver(e) {
    if (e.preventDefault) {
      e.preventDefault();
    }

    e.dataTransfer.dropEffect = 'move';

    return false;
  }

  function handleDragEnter(e) {
    this.classList.add('over');
  }

  function handleDragLeave(e) {
    this.classList.remove('over');
  }

  function handleDrop(e) {
    if (e.stopPropagation) {
      e.stopPropagation(); // stops the browser from redirecting.
    }

    if (dragSrcEl != this) {
      dragSrcEl.innerHTML = this.innerHTML;
      this.innerHTML = e.dataTransfer.getData('text/html');
    }

    return false;
  }

  function handleDragEnd(e) {
    this.style.opacity = '1';

    items.forEach(function (item) {
      item.classList.remove('over');
    });
  }

  let items = document.querySelectorAll('.playercontainer .box');
  items.forEach(function(item) {
    item.addEventListener('dragstart', handleDragStart, false);
    item.addEventListener('dragenter', handleDragEnter, false);
    item.addEventListener('dragover', handleDragOver, false);
    item.addEventListener('dragleave', handleDragLeave, false);
    item.addEventListener('drop', handleDrop, false);
    item.addEventListener('dragend', handleDragEnd, false);
  });
});

</script>
rqdpfwrv

rqdpfwrv1#

我需要查看您的html,但是:

let items = document.querySelectorAll('.playercontainer .box');

可能需要把它改成

let items = document.querySelectorAll('.playercontainer');

看起来,无论玩家姓名的内部html在哪个div中,都需要是唯一可以拖拽的东西,而数字所在的可能标记不需要添加eventlistener。

相关问题