【问题标题】:Sort array of elements by their ID [duplicate]按 ID 对元素数组进行排序 [重复]
【发布时间】:2016-03-01 07:03:00
【问题描述】:

我正在尝试根据 ID 对 DOM 元素数组进行排序。通过获取具有给定类的所有元素来填充数组:

var rowsList = document.getElementsByClassName("employee_grid_rows");
rowsList.sort(); //??

如何按 ID 进行排序?

【问题讨论】:

  • 只对数组排序?或按该顺序重新定位 DOM 中的元素?
  • 我会重新定位它们,但我想我已经弄清楚了
  • 你在用jQuery吗?
  • 是的,我在某些事情上使用 jQuery,而在其他事情上使用 vanilla

标签: javascript jquery arrays


【解决方案1】:

您必须对 HTMLCollection 进行排序

var rowsList = document.getElementsByClassName("employee_grid_rows");
console.log(rowsList);

var arr = Array.prototype.slice.call( rowsList );
rowsList = arr.sort(function(a, b) {
  //Comparing for strings instead of numbers
  return a.id.localeCompare(b.id);
});

console.log(rowsList);

【讨论】:

  • 顺便声明了两个“var rowsList”
  • 谢谢,当我尝试使用排序时,我不断收到“未定义不是函数”,我认为这已解决!
  • 上述解决方案适用于对数字进行排序。要对字符串进行排序,请使用 a.id.localeCompare(b.id);。我的回答中提供了解决方案。
  • 是的,它只适用于数字,很好。
  • 是的,我只是厌倦了杰里米的建议,奏效了。谢谢你们!
【解决方案2】:
rowList = rowList.sort(function(a, b) {
    return a.id.localeCompare(b.id);
});

【讨论】:

  • 我不必做a.getAttribute('id')? a.id 会起作用吗?
  • 是的,它是一个 DOM 元素属性,所有特定元素都继承自基本 dom 元素,因此它们具有 id 属性。
  • HTMLCollection 对象有 sort 方法吗?
  • 这个答案不正确。
  • 由于ids 总是字符串(它们不能以数字开头),这不会产生预期的结果!
猜你喜欢
  • 1970-01-01
  • 2017-04-27
  • 2021-10-10
  • 1970-01-01
  • 1970-01-01
  • 2017-09-08
  • 2022-11-15
  • 2016-02-01
  • 2016-05-29
相关资源
最近更新 更多