【JS】随着进度条进展,逐个显示li节点

如下代码创建了一个水平进度条,随着水平进度条的发展,逐个显示table中的每个li元素,显示顺序由li元素的order属性控制。

代码如下,就不多解释了,懂得都懂。

复制代码
<!DOCTYPE html>
<html lang="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<head>
     <title>创建动态链接的三种方式</title>
     <style type="text/css">
        
     </style>
    </head>

     <body>
        <div id="progressBar" style="width:0%;height:2px;background-color:teal;">&nbsp;</div>
        <table>
            <tbody id="mytable">
                <tr>
                    <td valign="top">
                        <ul>
                            <li order="1" style="display:none;">FileName</li>
                        </ul>
                    </td>
                    <td valign="top">
                        <ul>
                            <li order="2" style="display:none;">GroupName</li>
                        </ul>
                    </td>
                    <td valign="top">
                        <ul>
                            <li order="3" style="display:none;">Vname1</li>
                            <li order="4" style="display:none;">Vname2</li>
                            <li order="5" style="display:none;">Vname3</li>
                            <li order="6" style="display:none;">Vname4</li>
                            <li order="7" style="display:none;">Vname5</li>
                            <li order="8" style="display:none;">Vname6</li>
                        </ul>
                    </td>
                </tr>
            </tbody>
        </table>
     </body>
</html>
<script type="text/javascript">
<!--
    var liArray=findLiElms();
    var count=0;
    var handler=setInterval(autoSubmit,100);

    function autoSubmit(){
        count++;

        for(var i=0;i<liArray.length;i++){
            var obj=liArray[i];
            if(count>obj.percent){
                obj.elm.style.display="block";
            }
        }

        if(count>100){
            clearInterval(handler);
        }else{
            var progressBar=document.getElementById("progressBar");
            progressBar.style.width=count+"%";
        }
    }

    function findLiElms(){
        var table=document.getElementById("mytable");
        var lis=table.getElementsByTagName("li");
        
        var arr=[];

        for(var i=0;i<lis.length;i++){
            var li=lis[i];

            var obj={elm:li,order:li.getAttribute("order"),percent:0};

            if(li.hasAttribute("order")){
                arr.push(obj)
            }
        }

        var comparer=function(a,b){
            return a.order-b.order;
        }

        arr.sort(comparer);

        for(var i=0;i<arr.length;i++){
            var elm=arr[i];
            elm.percent=parseInt(Math.ceil(100*i/arr.length));
        }    

        return arr;
    }

//-->
</script>
复制代码

END

posted @   逆火狂飙  阅读(93)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2019-12-12 转载:Java对Base64处理的细节
2019-12-12 转载:Base64编解码介绍
2013-12-12 【高中数学/指数函数、值域】求函数y=2^x/(2^x+1)的值域?
2013-12-12 【Java/csv】一个CSV文件解析类(转载)
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东
点击右上角即可分享
微信分享提示