<tabel id="t"> <tr><td>1</td>测试1<td></td><td>测试2</td></tr> <tr><td>2</td>测试3<td></td><td>测试4</td></tr> </table> var table = document.getElementById("t"); var rows = table.children; var td1 = rows[0].children[0];
function sortTable(sTableID, iCol, sDataType) { var oTable = document.getElementById(sTableID); var oTBody = oTable.tBodies[0]; var colDataRows = oTBody.rows; var aTRs = new Array; var aTDs = []; for ( var i = 0; i < colDataRows.length; i++) { aTRs[i] = colDataRows[i]; aTDs[i] = aTRs[i].cells[0]; alert(document.getElementByTagName("th").innerHTML); }
if (oTable.sortCol == iCol) { aTRs.reverse(); } else { aTRs.sort(generateCompareTRs(iCol, sDataType)); } var oFragment = document.createDocumentFragment();
otherRows = table.querySelectorAll("td");//这是个节点集,你var array = Object.values(otherRows);,你遍历array就是了
switch (sDataType) {
case "int" :
return parseInt(sValue);
case "float" :
return parseFloat(sValue);
case "date" :
return new Date(Date.parse(sValue));
default :
return sValue.toString();
}
}
function generateCompareTRs(iCol, sDataType) {
return function compareTRs(oTR1, oTR2) {
vValue1 = convert(oTR1.cells[iCol].firstChild.nodeValue, sDataType);
vValue2 = convert(oTR2.cells[iCol].firstChild.nodeValue, sDataType);
if (vValue1 < vValue2) {
return -1;
} else if (vValue1 > vValue2) {
return 1;
} else {
return 0;
}
};
}
function sortTable(sTableID, iCol, sDataType) {
var oTable = document.getElementById(sTableID);
var oTBody = oTable.tBodies[0];
var colDataRows = oTBody.rows;
var aTRs = new Array;
for ( var i = 0; i < colDataRows.length; i++) {
aTRs[i] = colDataRows[i];
alert(document.getElementByTagName("th").innerHTML);
}
if (oTable.sortCol == iCol) {
aTRs.reverse();
} else {
aTRs.sort(generateCompareTRs(iCol, sDataType));
}
var oFragment = document.createDocumentFragment();
for ( var j = 0; j < aTRs.length; j++) {
oFragment.appendChild(aTRs[j]);
}
oTBody.appendChild(oFragment);
oTable.sortCol = iCol;
}
或者,你取出要排列的那一列单元格的数据排序,排好了相应的替换就行了。取特定单元格,用古老的children代替childNodes,
table.tr.children[0],table.tr.children[1]
<tr><td>1</td>测试1<td></td><td>测试2</td></tr>
<tr><td>2</td>测试3<td></td><td>测试4</td></tr>
</table>
var table = document.getElementById("t");
var rows = table.children;
var td1 = rows[0].children[0];
var oTable = document.getElementById(sTableID);
var oTBody = oTable.tBodies[0];
var colDataRows = oTBody.rows;
var aTRs = new Array;
var aTDs = [];
for ( var i = 0; i < colDataRows.length; i++) {
aTRs[i] = colDataRows[i];
aTDs[i] = aTRs[i].cells[0];
alert(document.getElementByTagName("th").innerHTML);
}
if (oTable.sortCol == iCol) {
aTRs.reverse();
} else {
aTRs.sort(generateCompareTRs(iCol, sDataType));
}
var oFragment = document.createDocumentFragment();
for ( var j = 0; j < aTRs.length; j++) {
oFragment.appendChild(aTRs[j]);
aTRs[j].insertBefore(aTDs[j], aTRs[j].cells[1]);
}
oTBody.appendChild(oFragment);
oTable.sortCol = iCol;
}
aTRs[j].insertBefore(aTDs[j], aTRs[j].cells[1]);
插入的是第二个数据。改成0就成功了,
多谢大家,结贴!~