Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
动态阻力;删除Javascript_Javascript_Drag And Drop - Fatal编程技术网

动态阻力;删除Javascript

动态阻力;删除Javascript,javascript,drag-and-drop,Javascript,Drag And Drop,我对javascript相当陌生。我正在尝试创建一个平台,通过拖放底部栏(navbarYuivae)中的项目,我可以在其中创建无限数量的板。每个新板也必须在平台内可移动。 在这个codepen的例子中,你已经有了一块可以移动的板,但是当你从“底部栏”拖动一块新板时,新创建的板是不可移动的。它们都具有相同的div结构和类名。 我不明白为什么新的董事会不能移动 如果你能理解我的错误,请告诉我 链接到代码笔: HTML JS //添加新板 const-baritems=document.qu

我对javascript相当陌生。我正在尝试创建一个平台,通过拖放底部栏(navbarYuivae)中的项目,我可以在其中创建无限数量的板。每个新板也必须在平台内可移动。 在这个codepen的例子中,你已经有了一块可以移动的板,但是当你从“底部栏”拖动一块新板时,新创建的板是不可移动的。它们都具有相同的div结构和类名。 我不明白为什么新的董事会不能移动

如果你能理解我的错误,请告诉我

链接到代码笔:

HTML


    JS

    //添加新板
    const-baritems=document.queryselectoral(“.baritem”);
    const workBoard=document.querySelector(“.workBoard”);
    设draggedItem=null;
    for(设i=0;i
    无法根据您发布的内容创建新板。我认为您的dragstart侦听器没有正确构建板的html结构。任何新板上也没有事件侦听器,因此无法拖动它们。创建事件侦听器后,必须附加它。所以您需要像newBContainer.addEventListener('mousedown',mousedown')这样的东西;但是您需要将mousedown事件移动到另一个范围。您好,谢谢您的回答。事件侦听器是board.addEventListener(“mousedown”,mousedown);它应该位于类为“board container”的所有对象上。因此,我假设新添加的元素将被选择,因为它们具有相同的类。我需要将mousedown事件移动到另一个范围是什么意思?
    <div class="navbarYuivae">
       <ul class="workboard-toolbar">
         <a class="baritem" name="board" draggable="true"><i class="fab fa-accusoft"></i></a>
         <a class="baritem" name="text-editor" draggable="true"><i class="fas fa-edit"></i></a>
         <a class="baritem" name="volume-control" draggable="true"><i class="fas fa-volume-down"></i></a>
       </ul>
       <ul class="textedit-toolbar"></ul>
     </div>
     <div class="work-board">
       <div class="board-container" name="board">
         <div class="board">
           <a class="board-icon"><i class="fab fa-accusoft"></i></a>
         </div>
         <input class="board-name" type="text" value="New Board" />
       </div>
     </div>
    
    //Add New Board
    
    const baritems = document.querySelectorAll(".baritem");
    const workBoard = document.querySelector(".work-board");
    
    let draggedItem = null;
    
    for (let i = 0; i < baritems.length; i++) {
      const item = baritems[i];
    
      item.addEventListener("dragstart", function () {
        if (item.name == "board") {
          // CREATE NEWBOARD
          const newBContainer = document.createElement("div");
          const newBoard = document.createElement("div");
          newBContainer.className = "board-container";
          newBoard.className = "board";
          newBoard.name = "board";
          newBContainer.appendChild(newBoard);
          draggedItem = newBContainer;
        }
        console.log("dragstart");
      });
    
      item.addEventListener("dragend", function (e) {
        if (draggedItem != null) {
          draggedItem.style.left = e.clientX + "px";
          draggedItem.style.top = e.clientY + "px";
          workBoard.appendChild(draggedItem);
          console.log(workBoard, e.clientX, e.clientY);
        }
      });
    }
    
    // Move in Panel
    
    const boardContainers = document.querySelectorAll(".board-container");
    
    for (i = 0; i < boardContainers.length; i++) {
      boardContainer = boardContainers[i];
      const board = boardContainer.querySelector(".board");
    
      board.addEventListener("mousedown", mousedown);
      function mousedown(e) {
        console.log(board);
        window.addEventListener("mousemove", mousemove);
        window.addEventListener("mouseup", mouseup);
    
        let cursorX = e.clientX;
        let cursorY = e.clientY;
    
        function mousemove(e) {
          let newX = cursorX - e.clientX;
          let newY = cursorY - e.clientY;
    
          const rect = boardContainer.getBoundingClientRect();
    
          boardContainer.style.left = rect.left - newX + "px";
          boardContainer.style.top = rect.top - newY + "px";
    
          cursorX = e.clientX;
          cursorY = e.clientY;
        }
        function mouseup() {
          window.removeEventListener("mousemove", mousemove);
          window.removeEventListener("mouseup", mouseup);
        }
      }
    }