Ich möchte Array.prototype.sort()
verwenden, um DOM.Element zu sortieren.JavaScript Array.prototype.sort() kann nicht auf DOM.HTMLLIElements aufrufen
Ich versuche wie folgt aus:
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>
Base auf API von Array.prototype.sort()
kann sort()
auf normale Objekte verwendet werden, mehr als Grundtyp.
Und ich fand
e[0].innerText = 232; // <li class="lang">232</li> ;works
e[0] = "123"; //<li class="lang">232</li> ;not work
So nahm ich aufgrund der Tatsache, dass Elemente in Array von HTMLLIElements können nicht direkt geändert werden, sort()
es irgendwie herausgefunden. So springen sort()
und zurück.
Ist das richtig? Und was ist die Institution hilft sort()
entscheiden, ob Deal mit dem Array?
Versuchen Sie, ein Array wie dieses zu konvertieren 'Array.prototype.slice.call (document.getElementById ('test-list'). Children)'. – destoryer
'Array.prototype.slice.call' entspricht' [] .slice.call' aus [Der effizienteste Weg, eine HTMLCollection in ein Array zu konvertieren] (http://stackoverflow.com/questions/222841/most-efficient-way) - Eine HTML-Sammlung in ein Array konvertieren. Und es hat wirklich genauso funktioniert. – d4rkb1ue
http://stackoverflow.com/questions/7059090/array-prototype-sort-call –