gpt4 book ai didi

JavaScript Array.prototype.sort() 无法调用 DOM.HTMLLIElements

转载 作者:行者123 更新时间:2023-11-27 23:05:04 24 4
gpt4 key购买 nike

我想使用Array.prototype.sort()对 DOM.Element 进行排序。

我尝试这样:

    var e = document.getElementById('test-list').children;

[].forEach.call(e,function(ee){
console.log(ee);
});
// print each child in e

[].sort.call([3,4,1],function(a,b){
console.log(a+","+b);
});
// 3,4; 4,1; [3, 4, 1]; compares every two elements


[].sort.call(e,function(a,b){
console.log(a+","+b);
});
// CAN NOT work! don't print anything.
    <ol id="test-list">
<li class="lang">Scheme</li>
<li class="lang">JavaScript</li>
<li class="lang">Python</li>
<li class="lang">Ruby</li>
<li class="lang">Haskell</li>
</ol>

基于Array.prototype.sort()的API , sort()可以用于普通对象而不是基本类型。

我发现了

e[0].innerText = 232; // <li class="lang">232</li> ;works
e[0] = "123"; //<li class="lang">232</li> ;not work

所以我假设由于 HTMLLIElements 数组中的元素不能直接更改,sort()不知何故想通了。所以sort()只需跳出并返回即可。

是吗?还有机构有什么帮助sort()决定是否处理Array?

最佳答案

有趣的问题!与悄无声息地消亡的 Chrome 不同,最新的 Firefox 更有帮助:

TypeError: HTMLCollection doesn't have an indexed property setter for '0'

这使得问题变得清晰:您无法将 sort 应用于没有数字属性 setter 的对象(因为 sort 尝试就地排序并失败)。

关于JavaScript Array.prototype.sort() 无法调用 DOM.HTMLLIElements,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36675401/

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