zoukankan      html  css  js  c++  java
  • 用原生js对表格排序

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

  • 相关阅读:
    webdav srs相关
    How To Configure WebDAV Access with Apache on Ubuntu 14.04
    ubuntu 编译lighttpd
    srs编译及推流测试
    Compile pciutils (lspci, setpci) in Windows x86,在 Windows x86 平台下编译 pciutils (lspci, setpci)
    mingw MSYS2 区别
    Qt之美(三):隐式共享
    Qt之美(二):元对象
    Qt之美(一):d指针/p指针详解
    C++的栈空间和堆空间
  • 原文地址:https://www.cnblogs.com/maskmtj/p/9599249.html
Copyright © 2011-2022 走看看