开发者问题收集

如何将变量作为函数参数传递

2011-08-26
174

我有这个函数,可以将具有可编辑类的单元格 ( 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);
});
2个回答

editRow 不接受行 ID,而是接受整行(DOM 元素本身)。您只是传递了错误的数据。尝试:

$('.editable').click(function(){
    editRow(this.parentNode);
});
Justin Niessner
2011-08-26

此处给出您的函数:

/* 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 选择器

Brian Glaz
2011-08-26