【问题标题】:How to pass a variable as a function parameter如何将变量作为函数参数传递
【发布时间】:2017-07-06 06:21:29
【问题描述】:

我有这个功能可以将具有可编辑类 (td.editable) 的单元格转换为输入字段。现在,您必须将行传递给函数。例如:editRow(myRow)

所以使用this.parentNode.id,我得到了行的ID。但是当我将值作为参数传递给editRow 函数时,它什么也不做。

我认为该函数认为rowId 是行的实际名称,而不是使用rowId 变量的内容作为行的名称。

function editRow(row) {
 $('td.editable',row).each(function() {
  $(this).html('<input type="text" value="' + $(this).html() + '" size="10" />');
 });
}    

/* click on cell with .editable class */
 $(".editable").click(function() {
   rowId = this.parentNode.id;
   editRow(rowId);
});

【问题讨论】:

    标签: javascript html-table row edit


    【解决方案1】:

    editRow 不需要行 id,它需要整行(DOM 元素本身)。您只是传递了错误的数据。试试:

    $('.editable').click(function(){
        editRow(this.parentNode);
    });
    

    【讨论】:

    • 是的。 jQuery( selector, [context] ) - "context - 用作上下文的 DOM 元素、文档或 jQuery"
    • 感谢大家的解决方案。现在效果很好!我现在又遇到了 2 个问题。 1)如果我点击该行,它会按预期工作。但是,如果我单击另一行,它会进入编辑模式,但我首先单击的行也仍处于编辑模式,所以现在我有两行甚至更多行在编辑更多。我试过return false,但没有帮助。 2)如果我两次或多次单击同一行,它会继续添加输入字段。有人可以帮我解决这些吗?
    【解决方案2】:

    鉴于您的功能:

    /* click on cell with .editable class */
    $(".editable").click(function() {
    rowId = this.parentNode.id;
    editRow(rowId);
    });
    

    您正在将 id 传递给您的 editRow 函数。所以在editRow里面,你可以这样做:

    function editRow(row) {
        $('#' + row +' td.editable').each(function() {
            $(this).html('<input type="text" value="' + $(this).html() + '" size="10" />');
        });
    }
    

    '#' 是 jquery id 选择器

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多