我尝试做的是在不需要表格时添加和删除表格中的文本框。当用户键入文本框时,该函数需要执行。该页面加载了几个文本框,这些文本框将此功能作为偶数监听器。 代码一直给我带来麻烦所以我在函数的开头放了一个断点(GC开发人员工具)并输入一个文本框。接下来会发生什么:
input.addEventListener("keypress", updateTextBox(TableName, input.id));
执行返回到函数的开头!?
function updateTextBox(TableName, element) {
var numCells = document.getElementById(TableName).rows.length - 1;
var lastTxt = document.getElementById(TableName + numCells);
var curNum = element.id.replace(/^\D+/g, '');
if (curNum != numCells && element.text == "" && lastTxt.text == "") {
document.getElementById(TableName).deleteRow(numCells);
}
else if (element.text != "" && lastTxt.text != "") {
var input = document.createElement("input");
input.type = "text";
nextNum = numCells + 2;
input.id = TableName + nextNum;
input.addEventListener("keypress", updateTextBox(TableName, input.id));
newRow = document.getElementById(TableName).insertRow();
newCell = newRow.insertCell();
newCell.appendChild(input);
}
}
答案 0 :(得分:3)
您正在调用该函数,因此会调用它。而是将其包装在匿名函数中。
input.addEventListener("keypress", function() {
updateTextBox(TableName, input.id));
});