首页 > 解决方案 > 如何排序

  • 里面的元素
  • 问题描述

    我有 3

  • 里面的元素:

    <ul id = "friends">
                
        <li>Zvonar</li>
        <li>Ivan</li>
        <li>Petro</li>
    
    </ul>
    

    和JS代码:

    let list = document.getElementsByTagName('li');
    
                    
    for (let i = 0; i < list.length; i++) {
    
        for (let j = 0; j < list.length; j++) {
    
            if (list[j].textContent > list[j + 1].textContent) {
    
                buf = list[j].textContent;
                list[j] = list[j + 1].textContent;
                list[j + 1] = buf;
            }
        }
    }
    

    但它给了我一个错误,即 [j + 1] 在第四个字符串处未定义。

    有没有办法使用 JavaScipt 对它们进行排序?将感谢任何答案。

  • 标签: javascripthtml

    解决方案


    您正在引用一个不存在的数组索引。该列表从索引 0-2 开始,因此在最后一次迭代中,if 语句将中断,因为您正在执行 2+1 = list[3]。但是数组没有那个索引。由于它是数组的最后一个索引,并且已经根据 n-1 索引检查了该索引,因此没有理由检查它。所以我认为您可以将循环更改为:

    for (let j = 0; j < list.length-1; j++) {...
    

    我没有测试过这个,但我认为这会解决你的问题


    推荐阅读