由于解析课程表的缘故,有如下需求:
   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. UVALive5870-Smooth Visualization-模拟水题

    很水的模拟题,拿数组搞就好了. 注意边界的地方不要算重. #include <cstdio> #include <cstring> #include <algorithm ...

  2. Spring IOC和Spring AOP的实现原理(源码主线流程)

    写在前面 正本文参考了<spring技术内幕>和spring 4.0.5源码.本文只描述原理流程的主线部分,其他比如验证,缓存什么可以具体参考源码理解. Spring IOC 一.容器初始 ...

  3. day25 面向对象引子

    面向对象编程所谓模子就是 类 抽象的,能知道什么属性,但是不知道属性具体值一切都是对象 有具体值 属性和技能都是根据类 模子来规范 # 人狗大战 # 角色模型 # 人的模型 def Person(na ...

  4. [转]GDB

    gdb调试coredump文件 gcc -g main.c //在目标文件加入源代码的信息 gdb a.out (gdb) start //开始调试 (gdb) n //一条一条执行 (gdb) st ...

  5. 使用metasploit中Evasion模块

    简介 几天前我说了kali这次更新我最关心的是metasploit升级到了5.0,5.0中有一个新的模块叫Evasion模块,这个模块可以轻松的创建反杀毒软件的木马,今天我们就来试一试 操作 首先打开 ...

  6. Python基本数据类型——元组和集合

    元组 tuple tuple和list非常类似,但是tuple一旦初始化就不能修改.元组采用圆括号表示. 例如: >>> tuple = (1,2,3) >>> t ...

  7. spoj QTREE - Query on a tree(树链剖分+线段树单点更新,区间查询)

    传送门:Problem QTREE https://www.cnblogs.com/violet-acmer/p/9711441.html 题解: 树链剖分的模板题,看代码比看文字解析理解来的快~~~ ...

  8. mac 本上对 rar 压缩包解压

    以前从晚上各种找软件对 xxx.rar 压缩包文件进行解压,也确实找到过那么几个,要不是不好用就是解压完有乱码,很是头疼. 这次又遇到这样的问题,于是下定决心将这个问题彻底解决好,经过验证,总结一下最 ...

  9. ulimit常用参数介绍

    ulimit常用参数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. ulimit 用于限制 shell 启动进程所占用的资源,支持以下各种类型的限制:所创建的内核文件的大小.进 ...

  10. 【转载】关闭XenServer中挂起(hang)虚机的方法

    在XenServer中,碰到VM挂起(hang)的情况,也不是那么少见,而VM长时间挂起,那么很影响心情和后续的操作. 一般情况下,为了关闭VM或者重启VM,我们推荐这样的操作顺序: 进入到VM内,使 ...