Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于'对子元素进行排序;h2和x27;标签_Javascript_Sorting - Fatal编程技术网

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');