用原生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
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有可能变换,所以先把长度记录下来,然后再循环访问。

原文地址:https://www.cnblogs.com/maskmtj/p/9599249.html

时间: 2024-10-07 04:51:07

用原生js对表格排序的相关文章

JS实现表格排序

今天有点闲,写个小东西,使用JS实现点击表格标题栏实现自动排序功能,嘻嘻... 一.JS代码,文件名为code.js如下: (function($){ //插件 $.extend($,{ //命名空间 sortTable:{ sort:function(tableId,Idx){ var table = document.getElementById(tableId); var tbody = table.tBodies[0]; var tr = tbody.rows; var trValue

使用原生JS实现表格数据的翻页功能

使用原生JS实现如下图所示表格数据的翻页功能: HTML代码: <body> <div id="title"> <h1>表格标题</h1> </div> <table id="table" border="1"></table> <div id="pagination"> <button id="prev"

使用JS实现表格排序

功能:点击姓名.力量.智慧时,实现列排序. HTML: <!DOCTYPE html> <html> <head> <style type="text/css"> #tb{ border: 1px solid #ddd; } #tb tbody td{ border: 1px solid #ddd; } </style> <meta charset="utf-8"> <title>&

原生JS 实现元素排序

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; c

[Js]表格排序

思路:遍历每个li,病并把它们存放到数组中去,然后通过sort()方法进行排序 <body>    <input type="button" value="排序按钮" id="btn1">    <ul id="ul1">        <li>58</li>        <li>8</li>        <li>31</

原生JS实现排序和分页的代码

原文:原生JS实现排序和分页的代码 代码下载地址:http://www.zuidaima.com/share/1550463246568448.htm 这个也是在网上下的,开始觉得不错,不过毕竟是插件. 标签: js 分页 排序 插件 话题: Web开发 前端技术 原生JS实现排序和分页的代码

原生js日期时间插件鼠标点击文本框弹出日期时间表格选择日期时间

原文出处 (这是我从互联网上搜来的,感觉能满足各方面的需求.个人感觉挺不错的,所以后期修改了一下向大家推荐!) 效果图: html代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org

js学习总结----表格排序及dom映射

一.表格排序 //1.先把元素集合类数组转化为数组 var ary = utils.listToArray(oLis);//上几节封装好的listToArray //2.给数组进行排序:按照每一个li中的内容大小进行排序 ary.sort(function(a,b){ return parseFloat(a.innerHTML) - parseFloat(b.innerHTML) }) //3.按照ary中存储的最新顺序依次的把对应的li添加到页面当中 var frg = document.cr

js学习总结----经典小案例之表格排序

具体代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> *{margin:0;padding:0;font-family:"微软雅黑";font-size:14px