【发布时间】:2020-06-02 16:38:13
【问题描述】:
我的代码在其他浏览器上运行良好,但在 Internet Explorer 11 上我得到 SCRIPT5007: Unable to get property 'parentNode' of undefined or null reference。有谁知道如何修复该错误?这是我的代码:
var selected
function dragOver(e) {
if (isBefore(selected, e.target)) e.target.parentNode.insertBefore(selected, e.target)
else e.target.parentNode.insertBefore(selected, e.target.nextSibling)
}
function dragEnd() {
selected = null
}
function dragStart(e) {
e.dataTransfer.effectAllowed = "move"
e.dataTransfer.setData("text/plain", null)
selected = e.target
}
function isBefore(el1, el2) {
var cur;
if (el2.parentNode === el1.parentNode) {
for (cur = el1.previousSibling; cur; cur = cur.previousSibling) {
if (cur === el2) return true
}
} else return false;
}
<div class="sequence">
<div draggable="true" ondragend="dragEnd()" ondragover="dragOver(event)" ondragstart="dragStart(event)" class="choice 2" id="3">Yellow</div>
<div draggable="true" ondragend="dragEnd()" ondragover="dragOver(event)" ondragstart="dragStart(event)" class="choice 2" id="5">Red</div>
<div draggable="true" ondragend="dragEnd()" ondragover="dragOver(event)" ondragstart="dragStart(event)" class="choice 2" id="2">Green</div>
<div draggable="true" ondragend="dragEnd()" ondragover="dragOver(event)" ondragstart="dragStart(event)" class="choice 2" id="1">Blue</div>
<div draggable="true" ondragend="dragEnd()" ondragover="dragOver(event)" ondragstart="dragStart(event)" class="choice 2" id="4">Orange</div>
</div>
【问题讨论】:
-
嘿,欢迎来到 StackOverlow ... 为什么不添加断点,看看发生了什么?您的问题没有给我们太多继续...
parentNode of undefined意味着您假设的元素存在并且具有parentNode属性,不...所以看看你实际上有什么... -
你是如何绑定事件的?错误发生在什么函数上?
-
selected开始时未定义。你用selected和e.target调用isBefore,所以el1在isBefore中是未定义的。 -
错误发生在哪个函数中?在
isBefore或dragOver?如果是前者,请在调用isBefore之前检查selected的值。 -
在 isBefore 函数中。
标签: javascript jquery internet-explorer-11