用原生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实现
内外排序的区别 排序可以分为两种:内排序和外排序.当数据量不算太大的时候,计算可以在内存中完成的排序称为内排序.当数据量特别大,计算的数据,需要分多次进入内存中进行计算的排序称之为外排序 插入排序 直 ...
随机推荐
- shell 的 export命令
export 功能说明:设置或显示环境变量.语 法:export [-fnp][变量名称]=[变量设置值]补充说明:在shell中执行程序时,shell会提供一组环境变量.export可新增,修改或删 ...
- linux使用curl上传文件并且同时携带其它传递参数
一般使用linux原生态的命令curl上传文件时命令如下 假如要上传文件是myfile.txt curl -F "file_name=@myfile.txt" -X POST &q ...
- PAT甲题题解-1055. The World's Richest (25)-终于遇见一个排序的不水题
题目简单,但解题的思路需要转换一下,按常规思路肯定超时,推荐~ 题意:给出n个人的姓名.年龄和拥有的钱,然后进行k次查询,输出年龄在[amin,amx]内的前m个最富有的人的信息.如果财富值相同就就先 ...
- ELK Stack (1) —— ELK + Redis安装
ELK Stack (1) -- ELK + Redis安装 摘要 安装Elasticsearch.Logstash.Kibana与Redis以实现一个日志收集平台 版本 elasticsearch版 ...
- 第五周可执行代码 以及 Canvas 制作个人PSP分类饼图
第五周可执行代码已经上传github,地址是https://github.com/yanyige/CourseWork/tree/master/Week4.以及效果在http://yanyige.gi ...
- delphi Form属性设置 设置可实现窗体无最大化,并且不能拖大拖小
以下设置可实现窗体无最大化,并且不能拖大拖小BorderIcon 设为---biMax[False] biHelp [False]BorderStyle 设为---bsSingle 参考------- ...
- 浅谈JavaSript中的this
JavaScript的this对初学者来说一直是一个很头疼的问题,因为它的指向刚刚接触的时候往往觉得有点莫名奇妙,这篇博客用实例来概括一下,this代表什么以及如何改变函数的this. 在<Ja ...
- 【题解】Oulipo
题目描述 给出两个串S1,S2(只有大写字母),求S1在S2中出现了多少次. 例如:S1=“ABA”,S2=“ABABA”,答案为2. 输入T组数据,对每组数据输出结果. 输入输出格式 输入格式 第一 ...
- MT【176】两两乘积
求$1,2\cdots,n$两两乘积的平均值____ 解答:$\dfrac{1}{C_n^2}\sum\limits_{1\le i<j\le n}{ij}=\dfrac{1}{n(n-1)}( ...
- HGOI2010816 (NOIP 提高组模拟赛 day1)
Day1 210pts(含T1莫名的-10pts和T3莫名的-30pts) 100+70+40=210 rank 29 这道题第一眼看是字符串匹配问题什么KMP啊,又想KMP不会做啊,那就RK Has ...