JavaScript 拖拽表格行

3

这是我的动态表格,使用它可以获得三个不同id的表格。

<?php
echo "<table class='table table-hover table-bordered' ondrop='drop(event,this)' ondragover='allowDrop(event)' id='".$type."'>";
if(empty($players))
    echo "<tr><td></td></tr>";
foreach($players as $p)
{
    echo "<tr data-id='".$p['to']."' data-fixture='".$p['fixture']."' data-team='".$p['team']."' draggable='true' ondragstart='drag(event,this)' id='".$type."aa'>";
    echo "<td >".$p['name']."</td>";
    echo "</tr>";
}
echo "</table>";
?>

我的Javascript代码如下:

function allowDrop(ev) {
    ev.preventDefault();
}


  function drag(ev,str) {
      //alert(str);

    var temp = str.parentNode;
    child = temp.children;
    if(child.length==1)
    {
    $(temp).append("<tr><td></td></tr>");
    }

    ev.dataTransfer.setData("text", ev.target.id);
    ev.dataTransfer.setData("val", ev.target.getAttribute('data-id'));
    ev.dataTransfer.setData("fixture", ev.target.getAttribute('data-fixture'));
    ev.dataTransfer.setData("team", ev.target.getAttribute('data-team'));
}


function drop(ev,str) {
    ev.preventDefault();
    var data = ev.dataTransfer.getData("text");
    var id = ev.dataTransfer.getData("val");
    var fixture = ev.dataTransfer.getData("fixture");
    var team = ev.dataTransfer.getData("team");
    ev.target.appendChild(document.getElementById(data));
    //alert(fixture);
    if(str.id=='avl')
        status=1;
    else if(str.id=='uavl')
        status=2;

            $.ajax({
       url: "<?php echo base_url();?>index.php/teams/update_players/"+status+"/"+id+"/"+fixture+"/"+team,
       type: 'GET',
       success: function(data) {
          //$("#a_p").html(data);
          //alert(data);
       },
        });

} 

当将一个表中的行从一个表拖到另一个表时,tr被丢弃到了不属于表格的td中。
就像这样:
<table>
<tr>
<td>
<tr> (this is a dropped row)
<td></td>
</tr>
</td>
</tr>
</table>
1个回答

0
你的`drop`函数将一个子元素添加到`ev.target`中。尝试使用`console.log`来检查`ev.target`的`tagName`。如果它是`TD`,那就是你的问题。
不在评论区提供这个信息,因为我没有足够的声望来提交评论。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接