0

I want to make a drag-and-drop application were the drpzone-fields are variable (JS -> foreach). The code workes on the manually created elements (HTML-code).

But when I tried to create a dropzone element in JS it does not work.

I do not know why it does not work.

<div class="dropzone">
    <img id="draggable" src="https://cdn.pixabay.com/photo/2020/12/02/01/06/chipmunk-5795916__340.jpg" draggable="true" width="100" height="35">
</div>
<br/><br/><br/>
<div id="timetable">
    <div class="dropzone"></div>
    <div class="dropzone"></div>
    <div class="dropzone"></div>
</div>
<style>
    body {
        user-select: none;
    }

    #draggable {
        text-align: center;
        background: white;
    }

    .dropzone {
        width: 100px;
        height: 40px;
        background: lightblue;
        margin: 10px;
        padding: 10px;
    }
</style>

<script type='text/javascript'>
    let dragged = null;

    const source = document.getElementById("draggable");
    source.addEventListener("dragstart", (event) => {
        dragged = event.target;
    });

    const target = document.querySelectorAll(".dropzone");
    target.forEach(function (item) {
        item.addEventListener("dragover", (event) => {
            event.preventDefault();
        });

        item.addEventListener("drop", (event) => {
            event.preventDefault();
            if (event.target.className === "dropzone") {
                dragged.parentNode.removeChild(dragged);
                event.target.appendChild(dragged);
            }
        });
    });
    window.onload = () =>{
        createTimetable();
    }

    const createTimetable = () => {

        const ele = document.createElement("div");
        ele.className ="dropzone";
        document.getElementById("timetable").append(ele);

    }

</script>
eliasRagel
  • 17
  • 5

0 Answers0