【问题标题】:How to add a reset() function to a drag and drop HTML?如何将 reset() 函数添加到拖放 HTML?
【发布时间】:2015-09-24 07:21:01
【问题描述】:

您好,我正在尝试为此拖放界面实现 reset() 函数。最初,条形图以随机顺序(硬编码位置)排列,用户无法通过拖放来移动它们。我想要一个重置函数来将带有表格的 div 元素刷新到其初始位置。

我试图复制 innerhtml 代码并在单击重置按钮时再次设置它,但这种方法似乎不起作用。有没有其他方法可以做到这一点?

<script>
var container = document.getElementById("game1");  
var content = container.innerHTML;

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

function drag(ev) {
    ev.dataTransfer.setData("text", ev.target.id);
}

function drop(ev) {
    ev.preventDefault();
    var data = ev.dataTransfer.getData("text");
    var evtarget=ev.target;
      if (evtarget=="[object HTMLImageElement]"){
           evtarget = evtarget.parentNode;
      }
      else {
      ev.target.appendChild(document.getElementById(data));
      }
}

function reset1(){
    var container = document.getElementById("game1");
    var content = container.innerHTML;
    alert(content);
    container.innerHTML= content;`
}

<div id="game1" style="padding-top: 140px; padding-left:40px">
<div class="container1">
    <div>
    <table>
    <tr><td>
        <div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"><img id="drag8" src="img/8.png" draggable="true" ondragstart="drag(event)" ondrop=""></div>
        </td>
        <td>
        <div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"><img id="drag4" src="img/4.png" draggable="true" ondragstart="drag(event)" ></div>
        </td>
        <td>
        <div id="div3" ondrop="drop(event)" ondragover="allowDrop(event)"><img id="drag3" src="img/3.png" draggable="true" ondragstart="drag(event)" ></div>
        </td>
        <td>
        <div id="div4" ondrop="drop(event)" ondragover="allowDrop(event)"><img id="drag5" src="img/5.png" draggable="true" ondragstart="drag(event)" ></div>
        </td>
        <td>
        <div id="div5" ondrop="drop(event)" ondragover="allowDrop(event)"><img id="drag1" src="img/1.png" draggable="true" ondragstart="drag(event)" ></div>
        </td>
        <td>
        <div id="div6" ondrop="drop(event)" ondragover="allowDrop(event)"><img id="drag7" src="img/7.png" draggable="true" ondragstart="drag(event)" ></div>
        </td>
        <td>
        <div id="div7" ondrop="drop(event)" ondragover="allowDrop(event)"><img id="drag6" src="img/6.png" draggable="true" ondragstart="drag(event)" ></div>
        </td>
        <td>
        <div id="div8" ondrop="drop(event)" ondragover="allowDrop(event)"><img id="drag9" src="img/9.png" draggable="true" ondragstart="drag(event)" ></div>
        </td>
        <td>
        <div id="div9" ondrop="drop(event)" ondragover="allowDrop(event)"><img id="drag2" src="img/2.png" draggable="true" ondragstart="drag(event)" ></div>
        </td>
        <td>
        <div id="div10" ondrop="drop(event)" ondragover="allowDrop(event)"><img id="drag10" src="img/10.png" draggable="true" ondragstart="drag(event)" ></div>
        </td>
        <td>
        <div id="div11" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
        </td>
        </tr>

    </table>
    <table>
        <tr>
        <td style="padding-left:230px; padding-top:15px; width:100px;">
           <input type="button" value="Reset" id="reset" onclick="reset1();" style="width:150px; background-color:black; color:white;"> 
        </td></tr>
    </table>
        <br>        
    </div>
</div>

【问题讨论】:

  • 您使用哪个插件进行拖放?
  • 我猜没有使用插件。我使用了w3schools.com/html/html5_draganddrop.asp 中给出的基本语法,但是,jQuery 用于检查每个图像是否被拖到正确的位置。

标签: javascript jquery html drag-and-drop reset


【解决方案1】:

将加载时的 HTML 保存到全局变量中,并在您单击 reset 按钮时使用它。

var container = document.getElementById("game1");  
var content = container.innerHTML;

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

function drag(ev) {
    ev.dataTransfer.setData("text", ev.target.id);
}

function drop(ev) {
    ev.preventDefault();
    var data = ev.dataTransfer.getData("text");
    var evtarget=ev.target;
      if (evtarget=="[object HTMLImageElement]"){
           evtarget = evtarget.parentNode;
      }
      else {
      ev.target.appendChild(document.getElementById(data));
      }
}

function reset1(){
    var container = document.getElementById("game1");
    container.innerHTML= html;
}                
var html;
window.onload = function(){
	html = document.getElementById('game1').innerHTML;
};         
.container1 table div{
    width:60px;
    height:40px;
    border:1px solid red;
}
<div id="game1" style="padding-top: 140px; padding-left:40px">
<div class="container1">
    <div>
    <table>
    <tr>
       <td><div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"><img id="drag8" src="http://dummyimage.com/60x40/f00/fff" draggable="true" ondragstart="drag(event)" ondrop=""></div></td>
        <td><div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"><img id="drag4" src="http://dummyimage.com/60x40/00f/fff" draggable="true" ondragstart="drag(event)" ></div></td>
        <td><div id="div3" ondrop="drop(event)" ondragover="allowDrop(event)"></div></td>
        <td><div id="div4" ondrop="drop(event)" ondragover="allowDrop(event)"></div></td>
        <td><div id="div5" ondrop="drop(event)" ondragover="allowDrop(event)"></div></td>
        <td><div id="div6" ondrop="drop(event)" ondragover="allowDrop(event)"><img id="drag7" src="http://dummyimage.com/60x40/0ff/fff" draggable="true" ondragstart="drag(event)" ></div></td>
        <td><div id="div7" ondrop="drop(event)" ondragover="allowDrop(event)"><img id="drag6" src="http://dummyimage.com/60x40/a0f/fff" draggable="true" ondragstart="drag(event)" ></div></td>
        <td><div id="div8" ondrop="drop(event)" ondragover="allowDrop(event)"><img id="drag9" src="http://dummyimage.com/60x40/fb2/fff" draggable="true" ondragstart="drag(event)" ></div></td>
        <td><div id="div9" ondrop="drop(event)" ondragover="allowDrop(event)"><img id="drag2" src="http://dummyimage.com/60x40/bd6/fff" draggable="true" ondragstart="drag(event)" ></div></td>
        <td><div id="div10" ondrop="drop(event)" ondragover="allowDrop(event)"><img id="drag10" src="http://dummyimage.com/60x40/12d/fff" draggable="true" ondragstart="drag(event)" ></div>
        <td><div id="div11" ondrop="drop(event)" ondragover="allowDrop(event)"></div></td>
        </tr>
    </table>
    <table>
        <tr>
        <td style="padding-left:230px; padding-top:15px; width:100px;">
           <input type="button" value="Reset" id="reset" onclick="reset1();" style="width:150px; background-color:black; color:white;"> 
        </td></tr>
    </table>
        <br>        
    </div>
</div>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-18
    • 2019-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多