【发布时间】:2021-10-06 20:48:51
【问题描述】:
我有一些简单的可拖动 html 代码,允许用户重新排列表格行。一切正常,但是我需要在用户放下拖动的行并且不知道该怎么做之后执行最终脚本。此时,我需要在用户删除元素时调用函数rowOrderWrite(),然后将tableID传递给该函数。
<table id="myTable">
<thead>
<tr>
<th>Head1</th>
<th>Head2</th>
<th>Head3</th>
<th>Head4</th>
</tr>
</thead>
<tbody>
<tr id="row1" draggable="true" ondragstart="rowOrderStart()" ondragover="rowOrderEnd()">
<td>values 1</td>
<td>values 2</td>
<td>values 3</td>
<td>values 4</td>
</tr>
<tr id="row2" draggable="true" ondragstart="rowOrderStart()" ondragover="rowOrderEnd()">
<td>values 5</td>
<td>values 6</td>
<td>values 7</td>
<td>values 8</td>
</tr>
<tr id="row3" draggable="true" ondragstart="rowOrderStart()" ondragover="rowOrderEnd()">
<td>values 8</td>
<td>values 9</td>
<td>values 10</td>
<td>values 11</td>
</tr>
</tbody>
还有我的 JS:
var row;
function rowOrderStart(){
row = event.target;
}
function rowOrderEnd(){
var e = event;
e.preventDefault();
let children= Array.from(e.target.parentNode.parentNode.children);
if(children.indexOf(e.target.parentNode)>children.indexOf(row))
e.target.parentNode.after(row);
else
e.target.parentNode.before(row);
var tableID = e.target.parentNode.id ;
}
function rowOrderWrite(tableID){
// do stuff with reorder table rows
...
}
【问题讨论】:
-
使用
ondragend? -
@ChrisG - 我不知何故看了这个……好几次。谢谢。我得到了它的工作。
标签: javascript html events drag-and-drop