由于解析课程表的缘故,有如下需求:
   1. 将任意表格解析成独立的单元格矩阵【本次博文的缘由】

   2. 根据矩阵坐标,确定任意一格的节点 
   
/*
表格-->网格化
标记表格的位置及其对应的节点
*/
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节点的网格矩阵【插件】的更多相关文章

  1. javascript闭包获取table中tr的索引 分类: JavaScript 2015-05-04 15:10 793人阅读 评论(0) 收藏

    使用javascript闭包获取table标签中tr的索引 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN& ...

  2. JavaScript实现获取table中某一列的值

    JavaScript实现获取table中某一列的值 1.实现源代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional/ ...

  3. 用JavaScript,获取Table中指定的行、列

    前言: 先要谢谢George Wing的慷慨赠书<悟透JavaScript>,让我更加感受到了技术交流的重要性,呵呵~ 进入正题,面试题中有一题:如何通过JavaScript获取Table ...

  4. day36—javascript对表格table的操作应用(一)

    转行学开发,代码100天——2018-04-21 今天记录一下,JavaScript对表格table的操作应用,包括表格元素的获取,创建,删除等. 一个普通的完整表格包括以下几个部分:table-&g ...

  5. 点击table中的某一个td,获得这个tr的所有数据

    功能: 点击table中的某一个td,获得这个tr的所有数据 效果图 <html> <head> <script> function getData2(elemen ...

  6. Spark Mllib里的分布式矩阵(行矩阵、带有行索引的行矩阵、坐标矩阵和块矩阵概念、构成)(图文详解)

    不多说,直接上干货! Distributed  matrix : 分布式矩阵 一般能采用分布式矩阵,说明这数据存储下来,量还是有一定的.在Spark Mllib里,提供了四种分布式矩阵存储形式,均由支 ...

  7. table 中 文字长度大于td宽度,导致文字换行 解决方案

    1.TD不换行 nowrap属性 表格table的td单元格中,文字长了往往会撑开单元格,但是如果table都不够宽了,就换行了好像(不要较真其他情况,我只说会换行的情况).换行后的表格显得乱糟糟,不 ...

  8. 再谈树---无根树转有根树( dfs搜索转化+fa数组记录父节点) *【模板】

    #include <stdio.h> #include <string.h> #include <stdlib.h> #include <vector> ...

  9. table 设置自动宽度后 td 的固定宽度 在 谷歌浏览器自动拉伸

    table   设置自动宽度后   td 的固定宽度  在 谷歌浏览器自动拉伸 解决方案 <table style="table-layout:fixed;">

随机推荐

  1. Delphi编码规范

    以下是在之前的公司与别人共同参与制定的Delphi开发规范(5年前了,那时用的还是Delphi7,部分规则可能有些过时,但不整理了,觉得有用的人,自己整理成适合自己的开发规范吧), 目    录一.序 ...

  2. oracle小知识点

    一 . procedure和function: procedure和function在语法上几乎完全一样,使用上却有小小的差别, procedure可以单独的调用 在命令行直接exec pro_xxx ...

  3. rabbitmq代码配置

    package com.qukoucai.test; import com.rabbitmq.client.AMQP;import com.rabbitmq.client.AMQP.BasicProp ...

  4. js對象構造

    創建對象的3種方式: 1. var a=new Object() a.attributes=“1”: 2. var a={attributes:"1",aa:"2&quo ...

  5. poj1850-CODE-组合

    求出给定序列的序号.有一个定理需要知道 具体看这篇博客吧http://blog.csdn.net/lyy289065406/article/details/6648492 #include <c ...

  6. 自学工业控制网络之路1.3-典型的现场总线介绍FF

    返回 自学工业控制网络之路 自学工业控制网络之路1.3-典型的现场总线介绍FF 1994年6月,ISP和WORLDFIP合并成立现场总线基金会FF.1998年,FF基金会开发了HSE 10/100Mb ...

  7. 【LOJ#6374】网格(二项式反演,容斥)

    [LOJ#6374]网格(二项式反演,容斥) 题面 LOJ 要从\((0,0)\)走到\((T_x,T_y)\),每次走的都是一个向量\((x,y)\),要求\(0\le x\le M_x,0\le ...

  8. [luogu1912][bzoj4196][NOI2015]软件管理器

    题解 树剖模板题,每次改变是\(1\)或者是\(0\),区间求和和区间修改就可了. ac代码 # include <cstdio> # include <cstring> # ...

  9. luogu3203 弹飞绵羊 (LCT)

    新建一个N+1的点,飞出去的连到这个上,记size,每次统计x和N+1的链长就可以. 别忘了编号是从0开始的 #include<cstdio> #include<cstring> ...

  10. luogu3195/bzoj1010 玩具装箱(斜率优化dp)

    推出来式子然后斜率优化水过去就完事了 #include<cstdio> #include<cstring> #include<algorithm> #include ...