添加事件处理程序时,undefined不是函数

时间:2014-07-28 20:11:33

标签: javascript

我正在尝试获取一个按钮列表,并在domloaded

上为每个按钮添加事件侦听器
     window.addEventListener('DOMContentLoaded', function() {  
        var calKeys = document.getElementById("filters").querySelectorAll("a.Button");
        registerKeys(calKeys);
        var registerKeys = function(inputs){
             for(var i=0;i<inputs.length;i++) {
                    inputs[i].addEventListener("click", handleCalcKey, false);
            }
        };
        var handleCalcKey = function(){
             alert( "thi sis a test");
        }
     });

所以我的registerKeys方法基本上需要输入并添加处理程序。然而它失败,因为未捕获的类型错误未定义不是函数

不确定发生了什么......

1 个答案:

答案 0 :(得分:4)

那里:

registerKeys(calKeys);
var registerKeys = function(inputs){

在定义函数之前调用函数一行。变量声明被提升,而不是分配。

你可以这样做:

registerKeys(calKeys);
function registerKeys(inputs){

但它通常不太可读。除非有充分的理由(这里似乎没有),否则在使用它们之前给出的值会更清楚。