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;">
随机推荐
- js條件結構和循環結構
條件結構: if(語句1) if(語句1)else(語句2) if(語句1)elseif(語句2)else(語句3) switch結構: switch() { case 1: break: case ...
- Oracle数据库导入导出 imp/exp备份还原
Oracle数据导入导出imp/exp Oracle数据导入导出imp/exp 在cmd的dos命令提示符下执行,而不是在sqlplus里面,但是格式一定要类似于: imp/exp 用户名/密 ...
- 利用caffe自带的Makefile编译自定义so文件
1.文件目录结构 caffe-root |--include |--example |--modules |--test.h |--test.cpp |--python |--src |--tools ...
- android studio marvin 配置
buildscript { repositories { maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'} } } ...
- POJ3259(Wormholes) 判断负环
题意: 农夫john发现了一些虫洞,虫洞是一种在你到达虫洞之前把你送回目的地的一种方式,FJ的每个农场,由n块土地(编号为1-n),M 条路,和W个 虫洞组成,FJ想从一块土地开始,经过若干条路和虫洞 ...
- 2018 CCPC网络赛 1010 hdu 6447 ( 树状数组优化dp)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=6447 思路:很容易推得dp转移公式:dp[i][j] = max(dp[i][j-1],dp[i-1][j ...
- 【BZOJ3817/UOJ42】Sum(类欧)
[BZOJ3817/UOJ42]Sum(类欧) 题面 BZOJ UOJ 题解 令\(x=\sqrt r\),那么要求的式子是\[\sum_{d=1}^n(-1)^{[dx]}\] 不难发现,对于每个\ ...
- SharePoint 2013 APP 开发示例 (六)服务端跨域访问 Web Service (REST API)
上个示例(SharePoint 2013 APP 开发示例 (五)跨域访问 Web Service (REST API))是基于JavaScript,运行在web browser内去访问REST AP ...
- 「THUSCH 2017」大魔法师 解题报告
「THUSCH 2017」大魔法师 狗体面太长,帖链接了 思路,维护一个\(1\times 4\)的答案向量表示\(A,B,C,len\),最后一个表示线段树上区间长度,然后每次的操作都有一个转移矩阵 ...
- HDU 3338 Kakuro Extension (网络流,最大流)
HDU 3338 Kakuro Extension (网络流,最大流) Description If you solved problem like this, forget it.Because y ...