当前位置: 首页 > 面试题库 >

使用javascript对HTML列表进行排序

谷梁涵忍
2023-03-14
问题内容

我有一组三个列表项,它们希望在页面加载时从高到低自动显示。理想情况下使用jquery或javascript。

<ul class="list">
<li id="alpha">32</li>
<li id="beta">170</li>
<li id="delta">28</li>
</ul>

每个列表项都需要有自己的ID,因为它们每个都有各自的背景图像。数字必须是文本节点,以便用户可以编辑它们。


问题答案:

这可能是最快的方法,因为它不使用jQuery:

function sortList(ul){
    var new_ul = ul.cloneNode(false);

    // Add all lis to an array
    var lis = [];
    for(var i = ul.childNodes.length; i--;){
        if(ul.childNodes[i].nodeName === 'LI')
            lis.push(ul.childNodes[i]);
    }

    // Sort the lis in descending order
    lis.sort(function(a, b){
       return parseInt(b.childNodes[0].data , 10) - 
              parseInt(a.childNodes[0].data , 10);
    });

    // Add them into the ul in order
    for(var i = 0; i < lis.length; i++)
        new_ul.appendChild(lis[i]);
    ul.parentNode.replaceChild(new_ul, ul);
}

像下面这样调用函数

sortList(document.getElementsByClassName('list')[0]);

您可以以相同的方式对其他列表进行排序,如果列表类在同一页面上还有其他元素,则应给您的ul一个ID并使用它传递它。

编辑

既然您提到要在pageLoad上执行此操作,所以我假设您希望ul在DOM中后尽快发生,这意味着您应该将该函数添加sortList到页面的开头,并在列表之后立即使用它,例如这个:

<head>
    ...
    <script type="text/javascript">
        function sortList(ul){
            var new_ul = ul.cloneNode(false);
            var lis = [];
            for(var i = ul.childNodes.length; i--;){
                if(ul.childNodes[i].nodeName === 'LI')
                    lis.push(ul.childNodes[i]);
            }
            lis.sort(function(a, b){
               return parseInt(b.childNodes[0].data , 10) - parseInt(a.childNodes[0].data , 10);
            });
            for(var i = 0; i < lis.length; i++)
                new_ul.appendChild(lis[i]);
            ul.parentNode.replaceChild(new_ul, ul);
        }
    </script>
</head>
<body>
    ...
    <ul class="list">
        <li id="alpha">32</li>
        <li id="beta">170</li>
        <li id="delta">28</li>
    </ul>
    <script type="text/javascript">
        !function(){
            var uls = document.getElementsByTagName('ul');
            sortList( uls[uls.length - 1] );
        }();
    </script>
    ...
</body>


 类似资料:
  • 本文向大家介绍如何使用JavaScript对HTML列表进行排序?,包括了如何使用JavaScript对HTML列表进行排序?的使用技巧和注意事项,需要的朋友参考一下 要使用JavaScript对HTML列表进行排序,代码如下- 示例 输出结果 上面的代码将产生以下输出- 在点击“点击排序”按钮-

  • 问题内容: 我正在寻找一种表排序解决方案(使用JavaScript),但似乎还找不到合适的解决方案。我只需要按字母顺序对每一列进行排序。它不需要忽略任何代码或任何数字或使用货币。只需单击列标题即可将其从排序的z / za中切换出来。 有人知道这样一个非常简单的解决方案吗? 问题答案: 纯Javascript(ES6) 进行字母和数字排序-升序和降序 可在 Chrome , Firefox , Sa

  • 本文向大家介绍如何使用JavaScript对HTML表格进行排序?,包括了如何使用JavaScript对HTML表格进行排序?的使用技巧和注意事项,需要的朋友参考一下 排序使用JavaScript的HTML表格,代码如下 - 示例 输出结果 上面的代码将产生以下输出 - 在点击排序按钮-

  • 我有一个这样的方法: 此方法需要以如下字符串形式返回3个最昂贵项目的产品ID:“item1,item2,item3”。我应该只能使用溪流,我被困在这里了。我应该能够按值对项目进行排序,然后获得产品ID,但我似乎无法使其正常工作。 编辑: 产品ID位于入口类中

  • 问题内容: 我在Python中有两个列表 我想对第一个列表进行排序,并使用结果对第二个列表进行排序。 换句话说,结果应为: 我知道如何分别对每个列表进行排序,但是如何使用对另一个列表进行排序所产生的索引排列来对一个列表进行排列呢? 问题答案: 施瓦兹变换

  • 问题内容: 我有兴趣对流中的列表进行排序。这是我正在使用的代码: 我想念什么吗?列表未排序。 它应该根据具有最低值的项目对列表进行排序。 以及打印方法: 问题答案: 这与对参数引用进行排序的地方不同。在这种情况下,您将得到一个排序后的流,最终需要将其收集并分配给另一个变量: 您只是错过了分配结果