我觉得你这个数据给不得完整,因为你没给列头数据,从你的信息来看,我估计表格应该是这样的IDNameSpecification01010004一次性注射器10ml
首先,你得找到列序号与表头(列名称)的关系不喜欢写原生 DOM 操作,我用 jQuery 示例了var columnMap = [];
$("table tr:first th").each(function(index) { var $td = $(this);
columnMap[index] = $td.text();
});// 因为第一列是 CheckBox,改其值为 "",以便后面取数据的时候忽略columnMap[0] = "";
如果实在没有列头,也可以手工写一个映射关系出来var columnMap = ["", "ID", "Name", "Specification"];
现在来遍历表格的每一行(除标题行),把每一行转换成一个对象var data = [];
$("table tr:not(:first)").each(function() {
data.push(convertToModel($(this)));
});
其中 convertToModel 用于把一个 tr 的 jQuery 对象转换成模型,那么这个函数该怎么写呢?function convertToModel($tr) { var model = {};
$("td", $tr).each(function(i) { var $td = $(this); var name= columnMap[i];
if (name) { // 排除 ""
model[name] = $td.text();
}
}); return model;
}
最后是 jfiddle 上的示例如果你的表格不是用
而是用 来作为表头的单元格,那么注意改写对应的选择器。另外,如果表格像示例中那样通过 和 来区分了列头和内容,选择器还可以优化。