我有一个HTML表格,我可以使用javascript向该表添加一个新行。 我想使用onchange事件为表中的每个单元调用一个javascript(Ajax)函数。 `
<script type="text/javascript" src="nextTest.js"></script>
<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);
cell1.innerHTML = rowCount + 1;
var cell2 = row.insertCell(1);
var element2 = document.createElement("input");
element2.type = "text";
element2.name = "txtbox[]";
element2.onchange = nexttest();
cell2.appendChild(element2);
}
</SCRIPT>
</HEAD>
<body>
<INPUT type="button" value="Add Row" onclick="addRow('dataTable')" />
<TABLE id="dataTable" width="350px" border="1">
<TR>
<TD> 1 </TD>
<TD> <INPUT type="text" /> </TD>
</TR>
</TABLE>
</body>
</html>`
当我按下按钮时,会添加一个新行并触发onchange事件。 我想要做的是当有人将数据输入这些新单元格时,我希望触发onchange事件。该事件称为“nextTest”,它存储在外部文件中。
当我插入新行时,事件会触发,但如果我更新其中一个单元格,则不会发生任何事情。 我做错了什么?
提前致谢
答案 0 :(得分:1)
你必须分配一个函数,而不是函数调用(被调用函数除了返回另一个函数)。
省略括号:
element2.onchange = nexttest;
答案 1 :(得分:0)
function nexttest(evt){
alert(evt.target.value);
}
function addRow (tableID) {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
var cell1 = row.insertCell(0);
cell1.innerHTML = rowCount + 1;
var cell2 = row.insertCell(1);
var element2 = document.createElement("input");
element2.type = "text";
element2.name = "txtbox[]";
element2.onchange = nexttest; // give a valid function identifier here .
cell2.appendChild(element2);
}