在运行时HTML元素上调用click事件处理程序

时间:2014-08-26 03:01:42

标签: javascript html event-handling

我有一个HTML文件,当用户在表格单元格内部点击时,我正在创建一个文本区域。基本上,它是使用表创建的数据网格,当用户单击一个时,它会删除单元格中的文本并将其替换为文本区域。下面是我在表的onClick处理程序中使用的代码。

summaryTableElement.innerHTML = "<textarea id='summaryTextBox' value='TestString' onclick='doNothing(this.id)'> </textarea> <input type='button' onclick='saveSummary()' value='Save' /> "         

这一切都很好,它可以完美地创建文本区域。当用户单击文本区域以修改数据时,它会出错。在这种情况下,文本区域的单击事件处理程序永远不会触发。相反,表接收click事件,导致创建另一个文本区域。无论用户做什么,文本区域都不会收到任何事件。

现在,我很担心这里要做什么。

编辑:

我再次检查。事实证明,它正在触发孩子的点击事件处理程序。但是,事件也传播到父元素。

编辑:

我尝试在父级点击事件处理程序中添加以下条件

if (id.toString() == "SummaryData")

但即使对于child元素,这也会返回true。

1 个答案:

答案 0 :(得分:1)

使用指示单击一次的标志。如果已经点击它,那么就不要运行该功能。现在是文本区域的问题。在动态创建的html代码中,添加onfocus事件处理程序insteaad onclick。此外,对于您动态添加的所有文本区域,&ID标识也不能相同。使用像"id='xyz"+i+"'"这样的地方&#39; i&#39;表示一个计数,它是要添加的文本区域的编号。