1PeGaS
@1PeGaS

Почему не сортируются элементы?

  • Вопрос задан
  • 130 просмотров
Решения вопроса 2
Stalker_RED
@Stalker_RED
Потому что getElementsByTagName возвращает NodeList

Надо сконвертировать его в массив.
var p = Array.from(document.getElementsByTagName("p"))

или
var p = [...document.getElementsByTagName("p")]

https://jsfiddle.net/hw75w53g/

Также, стоит отметить, что функция сортировки должна возвращать 1, -1 или 0, а не true/false как у вас. В некоторых случаях, такая сортировка как у вас, может удивить.
Ответ написан
Комментировать
rockon404
@rockon404
Frontend Developer
Потому, что сначала надо сконвертировать коллекцию узлов в массив, так как коллекция узлов не имеет интерфейса используемого функцией sort.

Для конвертации можно использовать функцию slice:
const array = Array.prototype.slice.call(nodeList);

функцию Array.from:
const array = Array.from(nodeList)

spread оператор:
const array = [...nodeList];

Вот исправленный вариант с использованием Array.from https://jsfiddle.net/4e9exevw/
или такой если сортировать собираетесь только числа https://jsfiddle.net/uywwju0a/
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы