Javascript 上移列表项
您好,我有以下脚本: 我希望moveUp函数将列表向上移动一个位置Javascript 上移列表项,javascript,dom,Javascript,Dom,您好,我有以下脚本: 我希望moveUp函数将列表向上移动一个位置 var moveUp = function (up, direction) { var btn = up.target, li = btn.parentNode; li.insertBefore(li[1].nextSibling) } 有没有一个简单的方法可以做到这一点?另外,请使用纯javascript。我想您需要: li.parentNode.insertBefore(li, li.previousSi
var moveUp = function (up, direction) {
var btn = up.target,
li = btn.parentNode;
li.insertBefore(li[1].nextSibling)
}
有没有一个简单的方法可以做到这一点?另外,请使用纯javascript。我想您需要:
li.parentNode.insertBefore(li, li.previousSibling);
但是请注意,对于第一个元素,li.previousSibling
将null
,在这种情况下,它将附加到列表中。因此,必须添加一个复选框以避免移动第一个元素:
if (li.previsousSibling) {
li.parentNode.insertBefore(li, li.previousSibling);
}
代码中的问题:
- DOM操作方法总是在父节点上工作,而不是在节点本身上。如果您不知道某个方法是如何工作的,请在google上查找
mdn insertBefore
尝试访问li[1]
的属性li
,该属性不存在,因为1
是DOM元素对象li
- 我想你想要:
li.parentNode.insertBefore(li, li.previousSibling);
但是请注意,对于第一个元素,li.previousSibling
将null
,在这种情况下,它将附加到列表中。因此,必须添加一个复选框以避免移动第一个元素:
if (li.previsousSibling) {
li.parentNode.insertBefore(li, li.previousSibling);
}
代码中的问题:
- DOM操作方法总是在父节点上工作,而不是在节点本身上。如果您不知道某个方法是如何工作的,请在google上查找
mdn insertBefore
尝试访问li[1]
的属性li
,该属性不存在,因为1
是DOM元素对象li
t
,它应该是之前插入的。。。你也可以弄明白;)是的,我知道了对不起!因此,对于我的下移函数,它完全不是sameli.parentNode.insertBefore(li,li.nextSibling);//应该是这样的,对吗?不,如果你在下一个同级节点之前插入节点,你只是在插入它现在所在的位置。您想在“下一个”同级之前插入它:li.parentNode.insertBefore(li,li.nextSibling.nextSibling)代码>。当然,您应该始终确保定义了li.nextSibling
。是的,我错过了t
,它应该是insertBefore
。。。你也可以弄明白;)是的,我知道了对不起!因此,对于我的下移函数,它完全不是sameli.parentNode.insertBefore(li,li.nextSibling);//应该是这样的,对吗?不,如果你在下一个同级节点之前插入节点,你只是在插入它现在所在的位置。您想在“下一个”同级之前插入它:li.parentNode.insertBefore(li,li.nextSibling.nextSibling)代码>。当然,您应该始终确保定义了li.nextSibling
。