用原生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有可能变换,所以先把长度记录下来,然后再循环访问。
用原生js对表格排序的更多相关文章
- 案例学习总结:原生JS实现表格排序
最近在学习js的表格排序,没想到看不起眼的表格排序实际上却暗含了众多JS知识点.在这里记录一下此次学习过程.希望对大家也有所帮助. 完整的表格排序涉及了下列这些知识点: call方法使用 sort方法 ...
- JS对表格排序(支持对序号,数字,字母,日期)
JS对表格排序(支持对序号,数字,字母,日期) 前不久看到淘宝组件有"对表格排序的插件" 如想要看 可以看这个地址 http://gallery.kissyui.com/KSort ...
- JS实现表格排序
今天有点闲,写个小东西,使用JS实现点击表格标题栏实现自动排序功能,嘻嘻... 一.JS代码,文件名为code.js如下: (function($){ //插件 $.extend($,{ //命名空间 ...
- 原生JS 实现元素排序
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 原生js日期时间插件鼠标点击文本框弹出日期时间表格选择日期时间
原文出处 (这是我从互联网上搜来的,感觉能满足各方面的需求.个人感觉挺不错的,所以后期修改了一下向大家推荐!) 效果图: html代码: <!DOCTYPE html PUBLIC " ...
- 原生js实现table的排序
原生js实现table的排序 今天遇到了一个问题就是使用原生js对table标签进行排序 一开始的时候陷入了一个误区就是首先获取table,然后每次比较完大小都会交换children的值,准备到最后吧 ...
- js简单实现表格排序
昨天看到一篇关于表格排序的随笔,鉴于本人还只会简单的js,不会使用封装,所以自己也试了一下写这个效果.可能不太优化,原理思路是:获取行对象tr,排序tr中要比较的对象td,排序后添加回tbody.如下 ...
- 【原生】js实现表格的增删改查
说在前面的,写给小白白的,大神请绕道~ 今天用原生js写一下动态表格的增删改查,主要是熟悉一下js的DOM操作. 首先,做一个表格,用来显示提交的数据,如图下: 此处,我添加了编号.姓名.密码.生日. ...
- 关于排序原生js实现
内外排序的区别 排序可以分为两种:内排序和外排序.当数据量不算太大的时候,计算可以在内存中完成的排序称为内排序.当数据量特别大,计算的数据,需要分多次进入内存中进行计算的排序称之为外排序 插入排序 直 ...
随机推荐
- codeforces 1141G Privatization of Roads in Treeland
题目链接:http://codeforces.com/contest/1141/problem/G 题目大意: 给你一个无向连通图.每条边都有颜色,如果存在一个点的临边中有超过两条边颜色相同,这个点就 ...
- Arcengine效率探究之二——属性的更新(转载)
http://blog.csdn.net/lk103852503/article/details/6570748 修改一批要素的属性有多种方法,当数据量较大时,若选择不当可能会大大影响速度. 一.IR ...
- MyBatis3-动态SQL语句
MyBatis的动态SQL语句是基于OGNL表达式的.可以方便的在SQL语句中实现某些逻辑,总体说来MyBatis动态SQL语句主要有以下几类: 1.if语句(简单的条件判断). 2.choose(w ...
- [福大软工] Z班 个人项目自动测试结果
个人项目第二次测试结果[9.16] 注:下表中的成绩满分为25分,正确性测试 共5个,每个3分.效率测试共 2个,每个5分. 根据数据统计分档如下, // 前为档级,后为分数. 参数为50000 0- ...
- Pandas笔记目录
速查笔记 使用实例 Pandas-数据导入 (未完成) Pandas-数据探索 基础属性 shape indexs columns values dtype/dtypes 汇总和计算描述统计 coun ...
- Orchard是如何运行的
建立一个CMS网站(内容管理系统)是不同于建立一个普通的web站点:它更像是建立一个应用程序容器. 设计这样一个系统时,必须建立一流的可扩展性功能.这必需是一个非常开放式的构架,但是一个开放性的系统可 ...
- teamviewer & commercial-use
teamviewer & commercial-use https://www.teamviewer.com/zhCN/pricing/commercial-use/ https://www. ...
- DELPHI动态创建窗体
//第一种方式 procedure TForm1.btn1Click(Sender: TObject); begin With TForm2.Create(Application) do Try Sh ...
- jdk动态代理 要把目标对象 和自己都传进去;以便自己对目标对象的代理
- Antenna Placement POJ - 3020 (最小边集覆盖)
Antenna Placement Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10699 Accepted: 526 ...