есть скрипт с книги Девид Флэнаган. Не могу понять как работает его составляющая
<script>
function sortkids(e) {
// Это элемент, потомки которого должны быть отсортированы
if (typeof e == "string") e = document.getElementById(e);
// Скопировать дочерние элементы (не текстовые узлы) в массив
var kids = [];
for(var x = e.firstChild; x != null; x = x.nextSibling)
if (x.nodeType == 1 /* Node.ELEMENT_NODE */) kids.push(x);
// Выполнить сортировку массива на основе текстового содержимого
// каждого дочернего элемента. Здесь предполагается, что каждый
// потомок имеет единственный вложенный элемент – узел Text
kids.sort(function(n, m) { // Функция сравнения для сортировки
var s = n.firstChild.data; // Текстовое содержимое узла n
var t = m.firstChild.data; // Текстовое содержимое узла m
if (s < t) return -1; // Узел n должен быть выше узла m
else if (s > t) return 1; // Узел n должен быть ниже узла m
else return 0; // Узлы n и m эквивалентны
});
// Теперь нужно перенести узлы-потомки обратно в родительский элемент
// в отсортированном порядке. Когда в документ вставляется уже
// существующий элемент, он автоматически удаляется из текущей позиции,
// в результате операция добавления этих копий элементов автоматически
// перемещает их из старой позиции. Примечательно, что все текстовые узлы,
// которые были пропущены, останутся на месте.
for(var i = 0; i < kids.length; i++) e.appendChild(kids[i]);
}
</script>
<ul id="list"> <!—-Этот список будет отсортирован -->
<li>один<li>два<li>три<li>четыре<li>пять
<!-- элементы не в алфавитном порядке -->
</ul>
<!-- кнопка, щелчок на которой запускает сортировку списка -->
<button onclick="sortkids('list')">Сортировать</button>
помогите разобраться как работает ЭТО:
kids.sort(function(n, m) { // Функция сравнения для сортировки
var s = n.firstChild.data; // Текстовое содержимое узла n
var t = m.firstChild.data; // Текстовое содержимое узла m
if (s < t) return -1; // Узел n должен быть выше узла m
else if (s > t) return 1; // Узел n должен быть ниже узла m
else return 0; // Узлы n и m эквивалентны
});
Заранее спасибо!