我不知道这里出了什么问题,它已经使我发疯了。每当我在代码上使用一些断点时(如图像中所示),然后重新加载页面,一切都会正常进行。但是,如果我关闭开发人员工具然后刷新,则会抛出此错误:'Uncaught TypeError:$ design [a] .draggable不是一个函数(...)'。

以下是我的代码和图像:

调试映像:

javascript - 未被捕获的TypeError:.draggable不是函数(…)-LMLPHP

我的剧本:

    var canvas = document.getElementById("canvas");
    var ctx = canvas.getContext("2d");
    var $canvas = $("#canvas");
    var canvasOffset = $canvas.offset();
    var offsetX = canvasOffset.left;
    var offsetY = canvasOffset.top;

    var design = [];
    var $design = [];
    var pic = [];

    $.ajax({
      type: 'get',
      url: ('/getCustomizeParts'),
      data: {
      },
      success: function(data) {
        for (var a = 0; a < data.length; a++) {
          design[a] = new Image();
          pic[a] = data[a].partimagePath;
          design[a].src = "images/part/" + pic[a];
          $design[a] = $("#design" + (a + 1));
          //here it threows me the error
          $design[a].draggable({
            helper: 'clone',
          });
          $design[a].data("image", design[a]);
        }
        $canvas.droppable({
          drop: dragDrop,
        });
      }
    });


我已经按照以下顺序在页面中添加了脚本标记

<script src="/Admin/js/jquery-2.2.3.min.js"></script>
<script src="/Admin/js/jquery-ui.min.js"></script>
<script src="/Admin/js/customizeScript.js"></script>

最佳答案

尝试将defer属性添加到脚本链接,如下所示:

<script src="/Admin/js/customizeScript.js" defer></script>
// or this for XHTML
<script src="/Admin/js/customizeScript.js" defer="defer"></script>


有关defer属性的更多信息,请参见this w3school page

关于javascript - 未被捕获的TypeError:.draggable不是函数(…),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41369661/

10-09 23:04