[英]Onclick event in dynamically created button in javascript
要求:我有一個表有一行三列。 第一列有按鈕。 當我點擊該按鈕時,應該將新行添加到表中,當我單擊新添加的行中的按鈕(即動態創建)時,它應該進一步添加新行。
只有最后一行按鈕應該添加新行,所有以前的按鈕都應該更改為刪除按鈕。
--java腳本函數。
<html>
<head runat="server"><TITLE>Add/Remove dynamic rows in HTML table</TITLE>
<SCRIPT language="javascript">
function addRow(tableID) {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
var cell1 = row.insertCell(0);
var element1 = document.createElement("input");
element1.setAttribute('type','button');
element1.setAttribute('name','Add Row1');
element1.setAttribute('value','Add Row');
cell1.appendChild(element1);
var cell2 = row.insertCell(1);
var element2 = document.createElement("input");
element2.type = "text";
cell2.appendChild(element2);
var cell3 = row.insertCell(2);
var element3 = document.createElement("input");
element3.type = "checkbox";
cell3.appendChild(element3);
element1.onclick=addRow(tableID);
}
</HEAD>
<BODY>
<TABLE id="dataTable" width="250px" border="1">
<TR>
<td><INPUT type="button" value="Add Row" name="Add Row" onclick="addRow('dataTable')"/></td>
<TD><INPUT type="text" /></TD>
<TD><INPUT type="checkbox" name="chk"/></TD>
</TR>
</TABLE>
</BODY>
</html>
當我運行此代碼時,我得到一行有三列。 當我點擊第一行中的按鈕時......它無限地添加行。 請幫助我獲得輸出。
提前致謝 。
這段代碼不起作用的原因是這部分:
element1.onclick=addRow(tableID);
您期望發生的是將“addRow(tableID)”的值分配給新創建的元素的“onclick”屬性。
你實際在做的是立即調用'addRow'函數,導致程序無限循環。
修復此問題的最短路徑是使用類似這樣的東西:
element1.setAttribue('onclick','addRow("'+tableID+'")');
那是因為你的函數在調用自己:
**function addRow(tableID) {**
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
var cell1 = row.insertCell(0);
var element1 = document.createElement("input");
element1.setAttribute('type','button');
element1.setAttribute('name','Add Row1');
element1.setAttribute('value','Add Row');
cell1.appendChild(element1);
var cell2 = row.insertCell(1);
var element2 = document.createElement("input");
element2.type = "text";
cell2.appendChild(element2);
var cell3 = row.insertCell(2);
var element3 = document.createElement("input");
element3.type = "checkbox";
cell3.appendChild(element3);
**element1.onclick=addRow(tableID);**
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.