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

时间:2015-01-07 19:45:21

标签: javascript escaping

我希望有一个表,其单元格中包含来自MySQL的数据。

该表有许多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);时,我看到它发送了Text&#34; Cell_ID&#34;,而我想在那里看到数据ActionButton386。

任何帮助表示感谢。

3 个答案:

答案 0 :(得分:0)

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

来传入要点击的元素

然后,在SaveUpdateToActionList的正文中,Cell将引用刚刚点击的按钮。然后,您可以走向DOM以获取它所属的TD。

答案 1 :(得分:0)

你可以试试这个:

   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 ....

答案 2 :(得分:0)

只需将事件监听器与指定innerHTML属性分开注册:

Document.getElementById(IndexedActionButton).addEventListener('onclick', SaveUpdateToActionList);
将使用事件对象作为第一个参数调用

SaveUpdateToActionList。您可以通过选中event.target属性来访问单击了哪个元素。有关更多信息,请查看MDN - addEventListener文档