使用js统计html表格

上代码
index.html

<table border="1" cellspacing="0">
    <tr><th>人名</th><th>第一列</th><th>第二列</th></tr>
    <tr><td>用户1</td><td>c9</td><td>b2</td></tr>
    <tr><td>用户2</td><td>c9</td><td>b3</td></tr>
    <tr><td>用户三</td><td>c8</td><td>b3</td></tr>
</table>
<button onclick="tongji()">点击统计</button>
<script>
function tongji(){
    tables=document.getElementsByTagName('table').item(0);
    //是否修改原来的dom
    // tables=tables.cloneNode(true);
    //初始化列统计数据
    statistics={}
    for (var j=0;j<tables.rows[0].cells.length;j++){
        eval("statistics.cols"+j+"={}");
    }
    //遍历
    for (var i=0;i<tables.rows.length;i++){
       if (i>0){//跳过第一行
         for (var j=0;j<tables.rows[i].cells.length;j++){
            if(j>0){//跳过第一列
                text=tables.rows[i].cells[j].innerText;
                if (text!=null){
                    typeof statistics["cols"+j][text]=="undefined"?statistics["cols"+j][text]=1:statistics["cols"+j][text]++;
                    // eval("typeof statistics.cols"+j+"."+text+"==\"undefined\"?statistics.cols"+j+"."+text+"=1:statistics.cols"+j+"."+text+"++")
                }else{
                    console.log(text);
                }
            }
         } 
       }
    }
    
    newrow=tables.insertRow(tables.rows.length);
    cnum=0;
    for (i in statistics){
        if(i=="cols0"){
           newcol=newrow.insertCell(cnum++);
           newcol.innerHTML="统计结果";
        }else{
            text="";
            //排序整理
            sort=Object.keys(statistics[i]).sort();
            for (j in sort){
              j=sort[j];
              text+=j+"*"+statistics[i][j]+"<br>";
            }
            // console.log(text);
            newcol=newrow.insertCell(cnum++);
            newcol.innerHTML=text;
        }
    }
    //打开新页面输出统计结果
    // var show = window.open('');
    // show.document.write(tables.outerHTML);
    // show.document.title="统计结果";
    // show.document.url="统计结果";
    //控制台打印
    // console.log(statistics);
}
</script>

复制代码另存为html页面用浏览器打开就可以看到效果
吃透原理可以直接用f12控制台声明统计函数并使用

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值