一尘不染

将onclick事件添加到表行

javascript

我试图通过Javascript向表行添加onclick事件。

function addRowHandlers() {
    var table = document.getElementById("tableId");
    var rows = table.getElementsByTagName("tr");
    for (i = 1; i < rows.length; i++) {
        row = table.rows[i];
        row.onclick = function(){
                          var cell = this.getElementsByTagName("td")[0];
                          var id = cell.innerHTML;
                          alert("id:" + id);
                      };
    }
}

这在Firefox中可以正常工作,但是在Internet Explorer(IE8)中,我无法访问表格单元。我认为这与onclick函数中的“
this”被标识为“ Window”而不是“ Table”(或类似的东西)有关。

如果我可以访问当前行,则可以getElementById在onclick函数中执行,因为我找不到这样做的方法。有什么建议么?


阅读 409

收藏
2020-05-01

共1个答案

一尘不染

这样的事情。

function addRowHandlers() {
  var table = document.getElementById("tableId");
  var rows = table.getElementsByTagName("tr");
  for (i = 0; i < rows.length; i++) {
    var currentRow = table.rows[i];
    var createClickHandler = function(row) {
      return function() {
        var cell = row.getElementsByTagName("td")[0];
        var id = cell.innerHTML;
        alert("id:" + id);
      };
    };
    currentRow.onclick = createClickHandler(currentRow);
  }
}
2020-05-01