gpt4 book ai didi

javascript - 如何洗牌一个NodeList

转载 作者:行者123 更新时间:2023-12-03 09:39:26 25 4
gpt4 key购买 nike

假设我有一个节点列表:
list = document.querySelectorAll('div');
我想洗牌。我该怎么做?

我遇到的唯一答案,here建议将节点列表变成 array使用
var arr = [].concat(x);
同样,MDN建议以下(将 NodeList 变成 array ):

var turnObjToArray = function(obj) {
return [].map.call(obj, function(element) {
return element;
})
};

我的问题是,如果不将 NodeList 转换为数组,就没有办法做到这一点吗?

而且,以上两种方法哪个更好?

而且,一旦将 NodeList 转换为数组,当您对数组的某些成员进行操作时,是否会发生任何变化? (即从数组中删除一个节点是否会从 NodeList 中删除它)?

最佳答案

如果您需要就地更改元素的顺序,这可能会对您有所帮助

var list = document.querySelector('div'), i;
for (i = list.children.length; i >= 0; i--) {
list.appendChild(list.children[Math.random() * i | 0]);
}

工作 jsBin

旁注: concat() 通常较慢

关于javascript - 如何洗牌一个NodeList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25175798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com