【发布时间】:2015-05-01 16:54:53
【问题描述】:
我是 HTML5 新手,正在尝试学习拖放功能。我有一个 JavaScript 函数,用于创建 div 元素并将 Dragstart 事件附加到它。
var taskDefination = document.createElement("div");
taskDefination.className = "defaultButtonHolder";
taskDefination.setAttribute("draggable","true");
document.getElementById("toDo").getElementsByClassName('columnContent')[0].appendChild(taskDefination);
taskDefination.addEventListener('dragstart', dragStart, false);
}
现在我创建了一个拖放区
<span class="columnWidth">
<div class ="columnHeader">Progress</div>
<div class ="columnContent" ondragenter ="dragDrop.dragEnter(event)"></div>
</span>
dragEnter 函数属于一个外部 javascript 文件,它被设计为一个闭包。我检查了网络选项卡,这个 javascript 文件正在完美加载。
var dragDrop = function(){
var _dragEnter = function(){
console.log("Dragged dropped");
}
return{
dragEnter:_dragEnter
}
}
现在的问题是,每当我尝试将元素放在 dropzone 中时,它都会引发未定义而非函数错误。但是 ondropeneter 事件,如果调用在同一个 HTML 页面中编写的函数,它会完美执行。为什么它会抛出未定义而不是函数错误,尽管它在同一个 HTML 页面中编写的函数工作正常?
【问题讨论】:
-
“设计为闭包” 那么它是否被包装到其他函数中?
-
是的,它包含在 dragDrop 函数中。
-
调试你的代码我在我的手机上,但我相信你的dragDrop代码有一些错误的逻辑
标签: javascript html