Javascript 基于'对子元素进行排序;h2和x27;标签
我有一个包含几个类别的示例页面。每个类别都包装在一个Javascript 基于'对子元素进行排序;h2和x27;标签,javascript,sorting,Javascript,Sorting,我有一个包含几个类别的示例页面。每个类别都包装在一个.items类中,该类包含一个h2标题标记和几个链接。我的目标是根据h2标记按字母顺序对这些类别进行排序 我找到了几个关于如何做到这一点的示例,但它们都在jquery中。我只想在javascript中实现这一点。我发现一些代码可以对div进行排序,但不能按div的h2标记进行排序 HTML 推荐书 名录 常见问题 形式 JavaScript sortCategory('#mainContainer'); function sortCateg
.items
类中,该类包含一个h2标题标记和几个链接。我的目标是根据h2标记按字母顺序对这些类别进行排序
我找到了几个关于如何做到这一点的示例,但它们都在jquery中。我只想在javascript中实现这一点。我发现一些代码可以对div进行排序,但不能按div的h2标记进行排序
HTML
推荐书
名录
常见问题
形式
JavaScript
sortCategory('#mainContainer');
function sortCategory(s) {
Array.prototype.slice.call(document.body.querySelectorAll(s)).sort(function sort (ea, eb) {
var a = ea.textContent.trim();
var b = eb.textContent.trim();
if (a < b) return -1;
if (a > b) return 1;
return 0;
}).forEach(function(div) {
div.parentElement.appendChild(div);
});
}
将
ea.textContent.trim()更改为ea.querySelector('h2').textContent.trim()
及
将eb.textContent.trim()更改为eb.querySelector('h2').textContent.trim()
这基本上是说检查每个div的第一个H2元素,而不是div
希望我能帮上忙 更好一点(?):ea.querySelector('h2').textContent.trim()
非常正确。谢谢你的建议!这有点短,也不太复杂。
//****************************************
// Sort Categories Alphabetically
//****************************************
function sortCategory(elementContainer)
{
var allElements = document.body.querySelectorAll(elementContainer);
Array.prototype.slice.call(allElements).sort(byAlphabet).forEach(function(div)
{
div.parentElement.appendChild(div);
});
}
function byAlphabet(first, second)
{
var order = 0;
var first = first.querySelector('h2').textContent.trim();
var second = second.querySelector('h2').textContent.trim();
first > second ? order = 1 : order = -1;
return order;
}
//Call sortCategory function and pass in the container you want sorted
sortCategory('#mainContainer>.item');