<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script type="text/javascript">
let tableData = {
thead: ['头部1','头部2','头部2'],
tbody: [
[10,10],
[9,10],
[8,10],
[7,10],
]
}
let tbody = tableData.tbody;
let thead = tableData.thead;
let body = document.body;
let table = document.createElement('table');
table.border ='1px';
table.id ='mytable';
let tr = document.createElement('tr');
let test = false;
function sortToLow(event) {
let cellIndex = event.srcElement.cellIndex;
let mytable = document.getElementById('mytable')
let sortTable = document.createElement('table');
let mytableChildren = mytable.children;
let sortArr = [];
let tr = document.createElement('tr');
for(let i = 1; i < mytableChildren.length; i++) {
let mytableGrandson = mytableChildren[i].children;
let tdNumber = mytableGrandson[cellIndex].innerText;
sortArr.push({
coll: i,
value: tdNumber
})
}
test ? sortArr.sort((x, y) => {
return y.value - x.value;
}) : sortArr.sort((x, y) => {
return x.value - y.value;
})
test = !test
for(let i = 0; i < thead.length; i++) {
let th = document.createElement('th');
th.innerText = thead[i];
th.addEventListener('click',sortToLow)
tr.appendChild(th);
}
console.log('sortTable: ', sortTable);
sortTable.appendChild(tr);
for( let i = 0 ; i < sortArr.length ; i++ ) {
let dom = mytableChildren[ sortArr[i].coll ].cloneNode(true);
sortTable.appendChild(dom);
}
mytable.remove();
sortTable.id = "mytable";
sortTable.border = "1px";
body.appendChild(sortTable);
}
for(let i = 0; i < thead.length; i++) {
let th = document.createElement('th');
th.innerText = thead[i];
th.addEventListener('click',sortToLow)
tr.appendChild(th);
}
table.appendChild(tr);
for( let i = 0 ; i < tbody.length ; i++ ) {
let tr = document.createElement('tr');
for( let j = 0; j < tbody[i].length; j++) {
let td = document.createElement('td');
td.innerText = tbody[i][j];
tr.appendChild(td);
}
table.appendChild(tr);
}
body.appendChild(table);
</script>
</body>
</html>