Итак, у меня есть список групп, которые я хочу организовать в рабочем состоянии, например, так:HTML5 Draggable List - несколько setData?
<li data-band-id='1' draggable='true' class='band-name'>Metallica</li>
<li data-band-id='2' draggable='true' class='band-name'>Slayer</li>
<li data-band-id='3' draggable='true' class='band-name'>Paradise Lost</li>
<li data-band-id='4' draggable='true' class='band-name'>Gojira</li>
Я хотел бы быть в состоянии перетащить эти элементы списка вокруг изменения каждого размещения полос в общей список. До сих пор у меня есть следующие JavaScript, чтобы сделать это:
var dragSatMS = null;
function handleDragStart(e) {
//this.style.color = 'green';
dragSatMS = this;
e.dataTransfer.effectAllowed = 'move';
e.dataTransfer.setData('text', 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');
//this.style.color = '#333';
}
function handleDrop(e) {
if (e.stopPropagation) {
e.stopPropagation();
}
if (dragSatMS != this) {
dragSatMS.innerHTML = this.innerHTML;
this.innerHTML = e.dataTransfer.getData('text');
}
return false;
}
function handleDragEnd(e) {
[].forEach.call(mssatCols, function (mSatCol) {
mSatCol.classList.remove('over');
//mSatCol.style.color = '#333';
});
}
var mssatCols = document.querySelectorAll('#ms-saturday .band-name');
[].forEach.call(mssatCols, function(msSatCol) {
msSatCol.addEventListener('dragstart', handleDragStart, false);
msSatCol.addEventListener('dragenter', handleDragEnter, false);
msSatCol.addEventListener('dragover', handleDragOver, false);
msSatCol.addEventListener('dragleave', handleDragLeave, false);
msSatCol.addEventListener('drop', handleDrop, false);
msSatCol.addEventListener('dragend', handleDragEnd, false);
});
Это отлично работает, я могу перетащить списки, чтобы сделать их поменять местами и название группы свопы соответствующим образом. Однако значение атрибута 'data-band-id' остается таким, каким оно было. Я знаю, что это именно тот код, который у меня есть, и это моя проблема. Я хотел бы изменить код так, чтобы имя перетаскиваемого и отбрасываемого диапазона и значение атрибута 'data-band-id' было заменено.
Я много искал, но не нашел ничего, что может показать мне, как setData по нескольким значениям, любая помощь, которую очень ценят.
Следующая скрипку поддерживает этот ответ дальше: https://jsfiddle.net/yw07rhcm/ –
Спасибо вам обеим очень много :) – Kev
Вы приветственные Кева :) – Yass