当前位置: 移动技术网 > IT编程>开发语言>JavaScript > 用原生js对表格排序

用原生js对表格排序

2018年09月06日  | 移动技术网IT编程  | 我要评论

阿里的模拟笔试题,当时时间有限没写出来,其实是因为自己对原生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
nameindex
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有可能变换,所以先把长度记录下来,然后再循环访问。

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网