Javascript - 对 div 的集合进行排序

标签 javascript sorting

我正在尝试单独学习 Javascript,所以请不要推荐库或 jQuery。

我有一个 div 列表,我希望用户能够按它们的值对它们进行排序。例如:

<button onclick="sort();">Test</button>
<div class="num">2</div>
<div class="num">3</div>
<div class="num">8</div>
<div class="num">1</div>

JS:

function sort(){
   var elements = document.getElementsByClassName("num");
   elements.sort();
}

对于这其中的问题,我找不到一个直接的答案。 getElementsByClassName 是否返回具有该名称的每个 div 的值数组?如何,当数组被排序时,所以我反射(reflect)在 div 中的变化?

最佳答案

您不能在 NodeList 上使用 sort() 函数,这实际上是通过调用 getElementsByClassNamequerySelectorAll 获得的.

因此在使用 Array.sort() 之前,您必须将其转换为数组:

// Get elements and convert to array
const elems = [...document.querySelectorAll(".num")];

// Sort elements in-place
elems.sort((a, b) => Number(a.innerText) - Number(b.innerText));

// Join the array back into HTML
const outputHtml = elems.reduce((a, el) => a + el.outerHTML, "");

// Append HTML to parent container
document.getElementById('myDiv').innerHTML = outputHtml;

http://jsfiddle.net/g918jmoL/

关于Javascript - 对 div 的集合进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16909451/

相关文章:

javascript - .animate() slider 无法正常工作

javascript - 什么是......在javascript中的声明

javascript - jquery 基于类名的排序不起作用

c# - 按一个字段对 .Net 中的列表进行排序,然后按另一个字段排序

c++ - 分区排序编程问题

javascript - 为什么 .text().replace() 会删除我的 html?

javascript - Aurelia 仅用于客户端(前端)数据绑定(bind)

sorting - 如何在 Groovy 中对文本+日期字符串列表进行排序

sorting - 想要在编辑时自动对 Google 表格电子表格进行排序,但想要按日期排序

javascript - React.js 和 ExtJS 4