JavaScript之不规则Table转化为可定点索引td节点的网格矩阵【插件】
/*
表格-->网格化
标记表格的位置及其对应的节点
*/
var Grids = function(tableSelector,cell,row){
var cells = cell;//每行的列数
var rows = row;//每列的行数
var grids = new Array(rows);//行数
var table = document.querySelectorAll(tableSelector)[0];
var tds = table.getElementsByTagName("td"); var array1D = [];//网格的一维数组:方便快速搜索
//网格初始化
for(var i = 0; i < rows; i++){
grids[i] = new Array(cells);
for(var j = 0; j < cells; j++){
grids[i][j] = "[" + (i + 1) + "," + (j + 1) + "]";
}
} //注入网格单元信息
var colCounter = 0;//统计跨列的个数
var rowCounter = 0; //统计跨行的个数
var cursor = 0; //记录tds的游标
for(var i = 0; i < rows; i++){
for(var j = 0; j < cells; j++){ //一行的各列(跨列问题)
if(!(grids[i][j] instanceof HTMLElement)){//未被填充时
for(var k = 0; k < tds[cursor].colSpan; k++){
grids[i][j + k] = tds[cursor];
}
for(var m = 0; m < tds[cursor].rowSpan; m++){
grids[i + m][j] = tds[cursor];
}
cursor++;
} else {//已被填充node时,不作处理 }
}
} console.log('grids:', grids);
return grids;
} /**
分析: Text [i,j] index cursor
时间 [0,0] ==> 1 -> [0] ==> [colCounter(0) + rowCounter(0) + 0];
时间 [0,1] ==> 1 -> [0] ==> [colCounter(0) + rowCounter(0) + 0]; //col:之后才+1
星期一 [0,2] ==> 2 -> [1] ==> [colCounter(1) + rowCounter(0) + 1];
星期二 [0,3] ==> 3 -> [2] ==> [colCounter(1) + rowCounter(0) + 2];
星期三 [0,4] ==> 4 -> [3] ==> [colCounter(1) + rowCounter(0) + 3];
星期四 [0,5] ==> 5 -> [4] ==> [colCounter(1) + rowCounter(0) + 4];
星期五 [0,6] ==> 6 -> [5] ==> [colCounter(1) + rowCounter(0) + 5];
星期六 [0,7] ==> 7 -> [6] ==> [colCounter(1) + rowCounter(0) + 6];
星期日 [0,8] ==> 8 -> [7] ==> [colCounter(1) + rowCounter(0) + 7];
============================================================================================
早晨 [1,0] ==> 9 -> [8] ==> [colCounter(1) + rowCounter(0) + 8];
早晨 [1,1] ==> 9 -> [8] ==> [colCounter(1) + rowCounter(0) + 8];//col:之后才+1
"" [1,2] ==>10 -> [9] ==> [colCounter(2) + rowCounter(0) + 9];
"" [1,2] ==>11 -> [10] ==> [colCounter(2) + rowCounter(0) + 10]; colSpan变化的动因:
已结束了一个引起colSpan的td项
rowSpan变化的动因: cursor变化的动因: */ addEventLoad(function(){//外部小工具:自行忽略
var grids = new Grids("#Table1", 9, 13);
},true);
JavaScript之不规则Table转化为可定点索引td节点的网格矩阵【插件】的更多相关文章
- javascript闭包获取table中tr的索引 分类: JavaScript 2015-05-04 15:10 793人阅读 评论(0) 收藏
使用javascript闭包获取table标签中tr的索引 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN& ...
- JavaScript实现获取table中某一列的值
JavaScript实现获取table中某一列的值 1.实现源代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional/ ...
- 用JavaScript,获取Table中指定的行、列
前言: 先要谢谢George Wing的慷慨赠书<悟透JavaScript>,让我更加感受到了技术交流的重要性,呵呵~ 进入正题,面试题中有一题:如何通过JavaScript获取Table ...
- day36—javascript对表格table的操作应用(一)
转行学开发,代码100天——2018-04-21 今天记录一下,JavaScript对表格table的操作应用,包括表格元素的获取,创建,删除等. 一个普通的完整表格包括以下几个部分:table-&g ...
- 点击table中的某一个td,获得这个tr的所有数据
功能: 点击table中的某一个td,获得这个tr的所有数据 效果图 <html> <head> <script> function getData2(elemen ...
- Spark Mllib里的分布式矩阵(行矩阵、带有行索引的行矩阵、坐标矩阵和块矩阵概念、构成)(图文详解)
不多说,直接上干货! Distributed matrix : 分布式矩阵 一般能采用分布式矩阵,说明这数据存储下来,量还是有一定的.在Spark Mllib里,提供了四种分布式矩阵存储形式,均由支 ...
- table 中 文字长度大于td宽度,导致文字换行 解决方案
1.TD不换行 nowrap属性 表格table的td单元格中,文字长了往往会撑开单元格,但是如果table都不够宽了,就换行了好像(不要较真其他情况,我只说会换行的情况).换行后的表格显得乱糟糟,不 ...
- 再谈树---无根树转有根树( dfs搜索转化+fa数组记录父节点) *【模板】
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <vector> ...
- table 设置自动宽度后 td 的固定宽度 在 谷歌浏览器自动拉伸
table 设置自动宽度后 td 的固定宽度 在 谷歌浏览器自动拉伸 解决方案 <table style="table-layout:fixed;">
随机推荐
- 关于mysql性能压测之tpcc
软件下载: wget http://imysql.com/wp-content/uploads/2014/09/tpcc-mysql-src.tgz安装依赖:yum install -y mysql- ...
- BZOJ[Usaco2017 Jan]Promotion Counting——线段树合并
题目描述 The cows have once again tried to form a startup company, failing to remember from past experie ...
- MT【230】一道代数不等式
设$a,b,c>0,$满足$a+b+c\le abc$证明:$\dfrac{1}{\sqrt{1+a^2}}+\dfrac{1}{\sqrt{1+b^2}}+\dfrac{1}{\sqrt{1+ ...
- 【题解】 bzoj1076: [SCOI2008]奖励关 (装压+期望dp)
题面戳我 Solution 并不会做,看了下题解大概了解了.期望这个东西好难搞啊qwq 我们定义\(dp[i][j]\)表示第\(i\)步,拿到宝物前的状态为\(j\). 正着来会有很多不合法的情况, ...
- Android8.0运行时权限策略变化和适配方案
版权声明:转载必须注明本文转自严振杰的博客:http://blog.yanzhenjie.comAndroid8.0也就是Android O即将要发布了,有很多新特性,目前我们可以通过AndroidS ...
- 20 Zabbix 利用Scripts栏目对Hosts远程执行命令
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 20 Zabbix 利用Scripts栏目对Hosts远程执行命令 在Monitoring板块中, ...
- SQLite 学习笔记(一)
(1)创建数据库 在命令行中切换到sqlite.exe所在的文件夹 在命令中键入sqlite3 test.db;即可创建了一个名为test.db的数据库 由于此时的数据库中没有任何表及 ...
- 爬虫acm比赛成绩(多页成绩整合在一起、获取复制不了的数据)(hihocoder、计蒜客)
https://github.com/congmingyige/web-crawler_rank-of-competition-in-JiSuanKe-and-hihocoder 1. 计蒜客(获取复 ...
- 使用iostat来对linux硬盘IO性能进行检测
-x显示扩展统计数据 # 每隔1s显示6个统计数据 $ iostat -x 1 6 # 每隔1s显示磁盘sda的6个统计数据 $ iostat -x sda 1 6 # 每隔1s显示设备sda及其分区 ...
- linux command ------ find
find | grep luoluo 将当前目录及子目录的文件名中含有luoluo的文件过滤出来 | 是管道,把find查找的内容传递给下个命令(grep) find后面不加其他内容(比如路径)表示打 ...