【问题标题】:javascript call function after dropping a dragged element拖放拖动元素后的javascript调用函数
【发布时间】: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


【解决方案1】:

正如@ChrisG 回应的那样......解决方案是使用ondragend(functionName); - 我不知何故忽略了这一点(多次)。

【讨论】:

    猜你喜欢
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多