0

你好编码员我有以下脚本:http: //jsfiddle.net/UqDJk/241/

我希望 moveUp 函数将列表上移一位..

var moveUp = function (up, direction) {
  var btn = up.target,
    li = btn.parentNode;

  li.insertBefore(li[1].nextSibling)
}

有没有一种简单的方法可以做到这一点?ps请纯javascript。

4

1 回答 1

3

我想你想要:

li.parentNode.insertBefore(li, li.previousSibling);

但请注意,这li.previousSibling将是null第一个元素,在这种情况下,它将附加到列表中。所以你必须添加一个检查以避免移动第一个元素:

if (li.previsousSibling) {
    li.parentNode.insertBefore(li, li.previousSibling);
}

您的代码中的问题:

  • DOM 操作方法总是(?)在父节点上工作,而不是在节点本身上。如果您不确切知道某个方法的工作原理,请在MDN上查找,例如 google for mdn insertBefore.
  • li[1]尝试访问 的属性1li该属性不存在,因为li它是一个 DOM 元素对象。
于 2013-01-17T10:00:28.267 回答