gpt4 book ai didi

javascript 对 HTML 元素进行排序

转载 作者:行者123 更新时间:2023-12-03 21:49:28 28 4
gpt4 key购买 nike

我正在尝试对 li 元素进行排序并得到意外的结果我需要排序三遍才能正确,

我哪里搞错了?JavaScript

var sort_by_name = function(a, b) {
return a.innerHTML.toLowerCase() > b.innerHTML.toLowerCase();
}
$this = $("ol#table1");
var list = $this.children();
list.sort(sort_by_name);
console.log(list);
$this.html(list);

HTML

<ol id="table1" style="display: block; ">
<li class="menu__run">I</li>
<li class="menu__run">IXX</li>
<li class="menu__run">I</li>
<li class="menu__run">I</li>
<li class="menu__run">I</li>
<li class="menu__run">I</li>
<li class="menu__run">I</li>
<li class="menu__run">I</li>
<li class="menu__run">IXX</li>
<li class="menu__run">I</li>
<li class="menu__run">I</li>
<li class="menu__run">I</li>
<li class="menu__run">I</li>
<li class="menu__run">I</li>
<li class="menu__test">st</li>
<li class="menu__test">st</li>
<li class="menu__test">st</li>
</ol>

fiddle example

最佳答案

还有很多更好的排序方法。

  1. 您需要一个返回正确值的比较函数:-1、0 和 1。
  2. localeCompare() 就是这样一个比较函数。
  3. 您可以只移动 DOM 元素,而不用重新生成 HTML。
  4. 您可以直接在原始选择器中获取 LI 元素。
  5. "#table1" 是比 "ol#table1" 更高效的选择器。

我建议这样做:

$("div#btn").click(function() {
var sort_by_name = function(a, b) {
return a.innerHTML.toLowerCase().localeCompare(b.innerHTML.toLowerCase());
}

var list = $("#table1 > li").get();
list.sort(sort_by_name);
for (var i = 0; i < list.length; i++) {
list[i].parentNode.appendChild(list[i]);
}
});​

您可以在这里看到工作:http://jsfiddle.net/jfriend00/yqd3w/

关于javascript 对 HTML 元素进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10186192/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com