无法在 onClick 函数中将变量作为参数传递

Can't pass a variable as an argument in a onClick function

我想要一个 table 并且它的单元格中填充了来自 MySQL 的数据。

table有很多TD,它们都有一个Id。

我想将单元格的 ID 传递给一个函数,以便我可以编辑它的内容:

document.getElementById(IndexedActionButton).innerHTML = '<input type="Button" name = "EditActionButton" id="EditActionButton" onClick="SaveUpdateToActionList(&quot;Cell_ID&quot;)" value="Edit Action" />';

function SaveUpdateToActionList(Cell) {
    alert(Cell);   
    document.getElementById(Cell).innerHTML = 'Here'; 
}

当我显示 alert(Cell); 时,我看到它发送文本 "Cell_ID",而我想在那里看到数据 ActionButton386。

感谢任何帮助。

您可以通过将您的 onClick 脚本设置为 SaveUpdateToActionList(this);

来传递被点击的元素

然后,在SaveUpdateToActionList的正文中,Cell将引用刚刚被点击的按钮。然后你可以走上 DOM 到达它所属的 TD。

你可以试试这个:

   document.getElementById(IndexedActionButton).innerHTML = '<input type="Button" name =      "EditActionButton" id="EditActionButton" onClick="SaveUpdateToActionList()" value="Edit Action" />';

   function SaveUpdateToActionList(event) {
    alert(event.target.id);   
    document.getElementById(Cell).innerHTML = 'Here'; 
   }

但是,如果我正确理解了您要执行的操作,您应该有一个事件侦听器来捕获来自所有单元格的冒泡事件,而不是将一个 onclick 附加到每个单元格....

只需单独注册事件侦听器而不是指定 innerHTML 属性:

Document.getElementById(IndexedActionButton).addEventListener('onclick', SaveUpdateToActionList);

SaveUpdateToActionList 将以事件对象作为第一个参数调用。您可以通过检查 event.target 属性 来访问单击了哪个元素。有关详细信息,请查看 MDN - addEventListener 文档