Я получил помощь от нескольких на этом сайте, разрабатывая обучающую игру с перетаскиванием, в которой учащиеся перетаскивают изображения в правильном порядке. Я смог выполнить свои задачи в Winform с Visual Basic. Теперь я пытаюсь сделать то же самое в html. Используя три функции ниже, я могу перетащить изображение из одного div в другой пустой div. Но это не сработает, если я попытаюсь сбросить изображение в div, который уже содержит изображение. Я видел ответ в StackOverflow об использовании этой строки «ev.target.removeChild (ev.target.childNodes [0]» в функции drop, но это просто создает ошибку «Аргумент 1 из Node.removeChild не является объектом. "Спасибо за вашу помощь.заменить изображение с перетаскиванием перетаскивания
<!DOCTYPE HTML>
<html>
<head>
<style>
#div1, #div2, #div3, #div4, #div5
{float:left; width:100px; height:35px; margin:10px;padding:10px;border:1px solid #0066ff;}
#btn1
{float:left; width: 120px; height: 40px; margin: 125px; }
</style>
<script>
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");
//ev.target.removeChild(ev.target.childNodes[0]); //This line created an error
ev.target.appendChild(document.getElementById(data));
}
</script>
</head>
<body>
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"><img src='Images/grass(3).jpg' draggable="true" ondragstart="drag(event)" id="drag1" width="88" height="31"> </div>
<div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"><img src="Images/sun.jpg" draggable="true" ondragstart="drag(event)" id="drag2" width="88" height="31"> </div>
<div id="div3" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
<div id="div4" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
<div id="div5" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
</body>
</html>
Пожалуйста две вещи: один, обеспечивают [MCVE] (http://stackoverflow.com/help/mcve), а не краткий фрагмент кода, если MCVE не будет очень долго. Во-вторых, задайте только один вопрос на вопрос: получение одного изображения для замены другого (или, по-видимому, по крайней мере) является отдельным вопросом для их обмена. –
Убедитесь, что вы заходите на div, а не на изображение. – Musa
Муса, ты прав. , , если я увеличиваю размер div, тогда я могу перетащить второе изображение. Это может помочь, если я немного поработаю. Мое предпочтение заключалось бы в том, чтобы удалить (и скопировать) изображение в зону отбрасывания непосредственно перед тем, как я опустил новое изображение. –