2014-10-08 31 views
-1

我试图做的是在不需要它们时添加和删除表格中的文本框。当用户键入文本框时,该功能需要执行。该页面加载了几个文本框,这个函数作为一个偶数监听器。 代码一直给我带来麻烦,所以我在函数的开头放置了一个断点(GC开发人员工具),并在文本框中键入。会发生什么就行了:eventlistener在我将它添加到javascript时触发

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); 
       }    
      } 

回答

3

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

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

甜,非常感谢。你能解释为什么这个工作? – bob 2014-10-08 18:03:35

+0

@bob先用'()'调用函数,但现在你只是传递一个函数给它。不要忘记将它标记为答案,如果它帮助:) – 2014-10-08 18:07:13

+0

等待,甚至处理程序似乎不会被添加? – bob 2014-10-08 18:09:08

相关问题