【发布时间】:2011-06-21 16:03:13
【问题描述】:
当我碰壁时,我正在寻找一些关于如何完成此任务的想法。
我有一个表格,显示从 MySQL 数据库中提取的数据。该表以一行 13 个单元格的顺序排列,其中显示数据,然后是一个单元格的隐藏行。通过单击前一行的单元格索引 1 中的链接来切换隐藏行。像这样:
第 1 行:单击此单元格以显示第 2 行:另一个单元格:另一个单元格:ad nauseum 直到我们到达 13: 隐藏的第 2 行 第 3 行:单击此单元格以显示第 2 行:另一个单元格:另一个单元格:ad nauseum 直到我们到达 13: 隐藏的第 4 行 ...
所以我使用 jquery 拉出所有行,然后设置一个测试以确定它是显示行还是隐藏行,如果显示了,那么我将该行和下一行放入一个对象中,然后将该对象放入另一个对象,像这样:
//this function is for sorting the data in the table
$(".sort").click(function() {
//get what column we are sorting by
var sortBy = $(this).attr('sortBy');
//set the colnum to sort by
if (sortBy == "itemname") {
var sortCol = 1;
} else if (sortBy == "priority") {
var sortCol = 2;
} else if (sortBy == "livedate") {
var sortCol = 10;
} else if (sortBy == "status") {
var sortCol = 11;
} else if (sortBy == "designer") {
var sortCol = 12;
}
//get the table data
var tableData = getTableData("NO", "null", "YES", sortBy);
//get all the rows
var tableRowArray = $("#productTableBody tr");
//declare new table object
var tableObj = new Object;
var rowPackage = new Object;
//loop through tableRowArray and put rows into packages of two, the main row and the hidden row
for(var t=0; t<tableRowArray.length; t++) {
if($(tableRowArray[t]).children(":first").attr('class') == "colorCode") {
rowPackage[t] = $(tableRowArray[t]).children();
rowPackage[t+1] = $(tableRowArray[t+1]).children();
//dump rows into tableObj
tableObj[t] = rowPackage;
}
//clean out rowPackage
rowPackage = {};
}
var x=-2;
for(thisRow in tableObj) {
x = x+2;
var sortItem = $(tableObj[thisRow][x][sortCol]).html();
//ack! -->getting stumped here
}
});
我还收集了用户想要排序的列。然后我可以找到用户想要排序的单元格。我知道我需要提取该信息,放入数组并排序,但我想我对如何将排序后的数组应用回我的 tableObj 感到困惑,这样我就可以重写表格正文 HTML ......我被难倒的原因是一些要排序的数据将是相同的,例如如果由设计者排序,数据可能是这个{“a”,“b”,“c”,“c”,“a”,“a”,“ “a”},排序时将是 a、a、a、a、b、c、c,但由于有些是相同的,我无法返回并循环遍历对象并找到与第一项匹配的条目我的排序后的数组,有 4 个元素会匹配。那么如何确定对象中的哪个条目与排序列表中的第一个 a 匹配?
提前致谢。
【问题讨论】:
标签: javascript arrays sorting object