欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

用原生js对表格排序

程序员文章站 2022-05-21 21:27:24
阿里的模拟笔试题,当时时间有限没写出来,其实是因为自己对原生dom操作不熟悉,这里补一下。 题目的大意是有一个表格,如代码所示 大概长这样吧,注意有表头,然后让你写一个函数对表中的记录,比如按idx升序排序 思路:就将表中的数据全都取出来,排序之后重新建表。 代码 要记住的点就是,querySele ......

阿里的模拟笔试题,当时时间有限没写出来,其实是因为自己对原生dom操作不熟悉,这里补一下。

题目的大意是有一个表格,如代码所示

    <table>
      <tr>
        <th>name</th>
        <th>index</th>
      </tr>
      <tr>
        <td>jan</td>
        <td>1</td>
      </tr>
      <tr>
        <td>saj</td>
        <td>6</td>
      </tr>
      <tr>
        <td>law</td>
        <td>4</td>
      </tr>
      <tr>
        <td>aq</td>
        <td>3</td>
      </tr>
    </table
name index
jan 1
saj 6
law 4
aq 3

 

 

 

 

大概长这样吧,注意有表头,然后让你写一个函数对表中的记录,比如按idx升序排序

思路:就将表中的数据全都取出来,排序之后重新建表。

代码

<!doctype html>
<html>
<head>
    <title></title>
</head>
<body>
    <table>
      <tr>
        <th>name</th>
        <th>index</th>
      </tr>
      <tr>
        <td>jan</td>
        <td>1</td>
      </tr>
      <tr>
        <td>saj</td>
        <td>6</td>
      </tr>
      <tr>
        <td>law</td>
        <td>4</td>
      </tr>
      <tr>
        <td>aq</td>
        <td>3</td>
      </tr>
    </table>
</body>
<script type="text/javascript">
    var mysort = ()=>{
        var table = document.getelementsbytagname('table')[0]
        var trlist= table.queryselectorall('tr')
        var len = trlist.length
        var trarr = []
        var th 
        for(let i=0;i<len;i++){
            var tds = trlist[i].queryselectorall('td') 
            if(tds.length==0) { th = trlist[i] ; continue }
            trarr.push({name:tds[0].innertext,index:tds[1].innertext}) 
        }
        trarr.sort(function(a,b){
            return a.index>b.index
        })
        table.innerhtml = ""
        table.appendchild(th) 
        for(let i=0;i<trarr.length;i++){
            var tr = document.createelement("tr")
            var tdname = document.createelement("td")
            tdname.innertext = trarr[i].name 
            var tdindex = document.createelement("td")
            tdindex.innertext = trarr[i].index 
            tr.appendchild(tdname)
            tr.appendchild(tdindex)
            table.appendchild(tr)
        }
    }
    mysort()
</script>
</html>

要记住的点就是,queryselectorall这个方法很好用,返回一个查询的元素的数组,在访问的时候,因为dom有可能变换,所以先把长度记录下来,然后再循环访问。