我试图通过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函数中执行,因为我找不到这样做的方法。有什么建议么?
getElementById
这样的事情。
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); } }
编辑
工作演示。