下面是通过数据库查找生成的列表的屏幕截图:
正如你所看到的,列表仅仅是每个玩家在其位置上的排名。
我希望能够拖放每个框来切换列表中的玩家位置。在网上学习了一些教程之后,我能够做到这一点。请参见下图:
然而,我遇到的问题是,当我在名单上上下移动球员时,我还需要更新位置排名(第一列);如你所见,例如,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>
1条答案
按热度按时间rqdpfwrv1#
我需要查看您的html,但是:
可能需要把它改成
看起来,无论玩家姓名的内部html在哪个div中,都需要是唯一可以拖拽的东西,而数字所在的可能标记不需要添加eventlistener。