将onclick事件添加到表格行

42

我正在尝试通过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"(或类似的东西)有关。

如果我能够访问当前行,我就可以在onclick函数中执行getElementById,但我找不到方法来实现这一点。有什么建议吗?


1
你应该从索引0开始(var i = 0;),而不是1。 - SolutionYogi
12个回答

0

我的表格在另一个iframe中,所以我修改了的答案来适应这个问题:

<script type="text/javascript">
window.onload = addRowHandlers;
function addRowHandlers() {
    var iframe = document.getElementById('myiframe');
    var innerDoc = (iframe.contentDocument) ? iframe.contentDocument : iframe.contentWindow.document;

    var table = innerDoc.getElementById("mytable");
    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);
    }
}
</script>

0
selectRowToInput();
function selectRowToInput(){
var table = document.getElementById("table");
var rows = table.getElementsByTagName("tr");
for (var i = 0; i < rows.length; i++)
{
    var currentRow = table.rows[i];
    currentRow.onclick = function() {

       rows=this.rowIndex;
        console.log(rows);  
    };
}

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接