Вы должны привязать обработчик к первому .cell
.
rows[i].cells[0].onclick = function () {
А затем в обработчике получить доступ к .parentNode
из this
, чтобы получить строку.
И поскольку вы не закрываете никакие переменные, кроме тех, которые находятся в самой функции (и, конечно, за пределами этой функции), я бы просто использовал один обработчик вместо того, чтобы воссоздавать его в l oop.
function addRowHandlers() {
var table = document.getElementById("checktable2");
var rows = table.getElementsByTagName('tr');
var tid = '';
var tdate = '';
var tdescribe = '';
var wd = '';
var dep = '';
var tisclr = '';
for (var i = 1; i < rows.length; i++) {
rows[i].i = i;
rows[i].cells[0].onclick = handler;
}
function handler() {
var row = this.parentNode;
tid = this.innerText;
tdate = row.cells[1].innerHTML;
tdescribe = row.cells[2].innerHTML;
wd = row.cells[3].innerHTML;
dep = row.cells[4].innerHTML;
// etc more code
}
}
Я бы, наверное, использовал al oop, чтобы получить желаемый контент. Может быть так:
function handler() {
var row = this.parentNode;
var props = ["tid", "tdate", "tdescribe", "wd", "dep"];
var content = props.reduce(function(obj, key, i) {
obj[key] = row.cells[i][i ? "innerHTML" : "innerText"];
return obj;
}, {});
// etc more code
}
Теперь вместо переменных у вас есть свойства объекта content
.