Skip to content

Instantly share code, notes, and snippets.

@forethoughtde
Created September 13, 2016 14:46
Show Gist options
  • Save forethoughtde/b1cd5d1302e77b06ae57f86f9f471343 to your computer and use it in GitHub Desktop.
Save forethoughtde/b1cd5d1302e77b06ae57f86f9f471343 to your computer and use it in GitHub Desktop.
(function() {
'use strict';
var headElements = new Array();
var bodyElements = new Array();
var tableElement;
var selector = ".Tabelle-Titel-nur-oben";
function reinitialize()
{
headElements = [];
bodyElements = [];
tableElement;
}
function constructTable(reference)
{
tableElement = document.createElement('table');
var att = document.createAttribute("class"); // Create a "class" attribute
att.value = "demoTable"; // Set the value of the class attribute
tableElement.setAttributeNode(att); // Add the class attribute to <h1>
appendRow(reference);
}
function appendRow(reference)
{
var clonedTable = tableElement.cloneNode(true);
var headClass = document.createAttribute("class");
headClass.value = 'Zellen-Titel-nur-oben';
for(var i = 0; i < bodyElements.length; i++)
{
for(var j = 0; j < headElements.length; j++)
{
var row = clonedTable.insertRow();
var clonedRow = row.cloneNode(true);
var cell0 = clonedRow.insertCell();
var cloneHeadClass = headClass.cloneNode(true);
cell0.setAttributeNode(cloneHeadClass);
cell0.innerHTML = headElements[j].innerHTML;
var cell1 = clonedRow.insertCell();
cell1.innerHTML = bodyElements[i][j].innerHTML;
clonedTable.appendChild(clonedRow);
}
}
document.body.insertBefore(clonedTable, reference);
}
function selectTables(selector)
{
var elements = document.querySelectorAll(selector);
for (var i = 0; i < elements.length; i++)
{
parseHead(elements[i]);
parseBody(elements[i]);
constructTable(elements[i]);
reinitialize();
}
}
function parseHead(nodes)
{
var theadElements = nodes.querySelectorAll('thead');
for (var i = 0; i < theadElements.length; i++) {
var rows = theadElements[i]['rows'];
for (var j = 0; j < rows.length; j++) {
var children = rows[j]['children'];
for (var k = 0; k < children.length; k++) {
headElements.push(children[k]);
}
}
}
}
function parseBody(nodes)
{
var children = 'children';
var tbody = 'tbody';
var tBodyElements = nodes.querySelectorAll(tbody);
for(var i = 0; i < tBodyElements.length; i++)
{
var tBodyChildren = tBodyElements[i][children];
for(var j = 0; j < tBodyChildren.length; j++)
{
// row level
var greatChildren = tBodyChildren[j][children];
var innerElements = [];
for(var k = 0; k < greatChildren.length; k++)
{
innerElements.push(greatChildren[k]);
}
bodyElements.push(innerElements);
}
}
}
selectTables(selector);
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment