【问题标题】:Modify a function to ignore any clicks made in the last cell of each row of a table修改函数以忽略在表格每一行的最后一个单元格中所做的任何点击
【发布时间】:2021-04-15 22:31:25
【问题描述】:

我正在使用这个 JavaScript 函数,它的工作原理如下。当您单击表中的任何行时,它会在第 6 行指定的链接处打开一个新页面。(第 0 列的 ID# 添加到链接的末尾)它工作得很好,但现在我需要它来忽略点击在每行的最后一个单元格中制作。我试图在最后一个单元格中放置另一个链接,只要此功能处于活动状态,它就会打开第 6 行的链接并忽略该行最后一个单元格中的链接。由于表头,我从 2 开始。如何修改函数,使其不响应每行最后一个单元格中的点击?

function addRowHandlers(){
        var rows = document.getElementById("mytable").rows;
        for (i = 2; i < rows.length; i++) {
            rows[i].onclick = function(){ return function(){
                var id = this.cells[0].innerHTML; 
                window.open("https://site url/"+id+";", "Details", "top=150, left=500,height=757, width=900");   
            };}(rows[i]); }}
        window.onload = addRowHandlers();```

【问题讨论】:

  • 也许只是for (i = 2; i &lt; rows.length - 1; i++) {
  • 当我尝试这样做时,它只是停止为表格的最后一行工作。 rows.length 必须指总行数,而不是每行中的单元格数。

标签: javascript


【解决方案1】:

对不起,我误读了你的问题,我会在单元格而不是行上绑定 onclick 事件,然后像这样:

function addRowHandlers(){
    var rows = document.getElementById("mytable").rows;
    for (i = 2; i < rows.length; i++) {
        //edit: let instead of var
        let id = rows[i].cells[0].innerHTML;
        for (j = 0; j < rows[i].cells.length - 1/* last one is not included */; j++) {
            rows[i].cells[j].onclick = function(){
                window.open("https://site url/"+id+";", "Details", "top=150, left=500,height=757, width=900");   
            };
        }
    }
}

window.onload = addRowHandlers();

【讨论】:

    【解决方案2】:

    您可以为每行的所有最后一个单元格添加一个通用的类名。这样您就可以根据类名识别最后一个单元格,并避免对具有您提到的类名的单元格使用 window.open 函数.

    请参考以下修改后的代码。

        for (i = 2; i < rows.length; i++) {
            rows[i].onclick = function(){ return function(){
                for(var j = 0 ; j<=this.cells.length; j++) {
                    if(!this.cells[j].classList.contains('your className of last cell for each row') { 
                        var id = this.cells[0].innerHTML; 
                        window.open("https://site url/"+id+";", "Details", "top=150, 
                        left=500,height=757, width=900");
                    }
        }   
     
        window.onload = addRowHandlers();`
    

    【讨论】:

      猜你喜欢
      • 2017-11-03
      • 1970-01-01
      • 2014-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多