Javascript noderray.insertBefore的行为

Javascript noderray.insertBefore的行为,javascript,Javascript,通过使用JavaScript函数移动容器id=“ArticleContents”中HTML元素的顺序,我必须通过使用.insertBefore()移动NodeArray中元素的顺序来面对以下行为: 它从第一次尝试使ArticleContentSelected向上移动时起“几乎”起作用: if (currentItemID =="MoveUp" && index!=0){existingRow.insertBefore(articleContentSeleted

通过使用JavaScript函数移动容器id=“ArticleContents”中HTML元素的顺序,我必须通过使用.insertBefore()移动NodeArray中元素的顺序来面对以下行为:

它从第一次尝试使ArticleContentSelected向上移动时起“几乎”起作用:

if (currentItemID =="MoveUp" && index!=0){existingRow.insertBefore(articleContentSeleted,childrenExistingRow[index-1]);};
但这需要我花很多时间来进行向下移动:

if (currentItemID =="MoveDown" && index !=childrenExistingRow.length){existingRow.insertBefore(articleContentSeleted,childrenExistingRow[index+2]);};
现在我很想知道为什么

if (currentItemID =="MoveDown" && index !=childrenExistingRow.length){existingRow.insertBefore(articleContentSeleted,childrenExistingRow[index+1]);};
没有做那份工作

console.log(childExistingRow):

如果childExistingRow包含2、3或10个元素,则行为相同。

insertBefore()
本身似乎工作正常,使用xysibling属性可以避免处理索引、查找等:

设cnt=0;
功能启动(事件){
让节点=event.target.parentNode;
让container=node.parentNode;
if(node.previousElementSibling)
container.insertBefore(node,node.previousElementSibling);
log.innerText=++cnt;
}
功能关闭(事件){
让节点=event.target.parentNode;
让container=node.parentNode;
if(node.nextElementSibling)
container.insertBefore(node,node.nextElementSibling.nextElementSibling);
log.innerText=++cnt;
}

1.
2.
3.

单击:0
谢谢,现在对我来说有意义了
if (currentItemID =="MoveDown" && index !=childrenExistingRow.length){existingRow.insertBefore(articleContentSeleted,childrenExistingRow[index+1]);};
HTMLCollection(2) [textarea#Editor_Text1_0, textarea#Editor_img_1, Editor_Text1_0: textarea#Editor_Text1_0, Editor_img_1: textarea#Editor_img_1]
0: textarea#Editor_Text1_0
1: textarea#Editor_img_1
length: 2
Editor_Text1_0: textarea#Editor_Text1_0
Editor_img_1: textarea#Editor_img_1
__proto__: HTMLCollection