Javascript - 对 div 集合进行排序

2023-12-14

我正在尝试单独学习 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 的值的数组?那么,当数组排序后,我如何反映div中的变化?


你不能使用sort()NodeList 上的函数,这是您通过调用实际得到的getElementsByClassName or querySelectorAll.

所以在使用之前必须将其转换为数组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/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript - 对 div 集合进行排序 的相关文章

随机推荐