当我在javascript中添加eventlistener时会触发它

时间:2014-10-08 17:51:05

标签: javascript html

我尝试做的是在不需要表格时添加和删除表格中的文本框。当用户键入文本框时,该函数需要执行。该页面加载了几个文本框,这些文本框将此功能作为偶数监听器。 代码一直给我带来麻烦所以我在函数的开头放了一个断点(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);
                }            
            }

1 个答案:

答案 0 :(得分:3)

您正在调用该函数,因此会调用它。而是将其包装在匿名函数中。

input.addEventListener("keypress", function() {
    updateTextBox(TableName, input.id));
});