无法在 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("Cell_ID")" 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 文档
我想要一个 table 并且它的单元格中填充了来自 MySQL 的数据。
table有很多TD,它们都有一个Id。
我想将单元格的 ID 传递给一个函数,以便我可以编辑它的内容:
document.getElementById(IndexedActionButton).innerHTML = '<input type="Button" name = "EditActionButton" id="EditActionButton" onClick="SaveUpdateToActionList("Cell_ID")" 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 文档