首先确保有一个table:
<table id="table">
</table>
然后获取table和他的长度:
var table = document.getElementById("table");
var tableLength = table.rows.length;
做一个来自后台的list的循环:
for (var i = 0;i < data.viewList.length;i++ ){
//loop
}
添加tr,tr的class以及tr的function
//row数
var cnt = i + tableLength;
//生成
var row = table.insertRow(cnt);
//class
row.className = "sTable";
//方法
row.onclick = function(e){
colorChange(row);
};
//添加td
var cell0 = row.insertCell(0);
cell0.id = "td01";
cell0.innerHTML = data.viewList[i].slgtim;
var cell1 = row.insertCell(1);
cell1.id = "td02";
cell1.innerHTML = data.viewList[i].slgkid;
var cell2 = row.insertCell(2);
cell2.id = "td03";
cell2.innerHTML = data.viewList[i].svckid;
重点在于添加方法的代码,这个方式确实可以添加,但是实际运行之后无论点击哪一条tr始终是最后一条tr调用colorChange()。
在添加onclick方法的时候,row作为colorChange(obj)的参数传入,但是方法并没有被实际加载,传入的row或者说colorChange方法的obj依然是一个循环内的可变参数,所以obj一直是循环最后的row对象,因此onclick方法的添加应该改成这样,以获取当前row对象
row.onclick = function(e){
colorChange($(this));
};