Javascript addEventListener不';不添加事件

Javascript addEventListener不';不添加事件,javascript,Javascript,我有个问题,似乎找不到答案。 我想向动态创建的按钮添加事件侦听器 我按以下顺序做事: var handle = function() {changeActiveState();}; var params = {"id":"active"+rowCount, "click":handle}; 然后我将参数发送给一个函数,该函数在表中创建单元格 var node = document.createElement('input'); node.setAttribute("type","button"

我有个问题,似乎找不到答案。 我想向动态创建的按钮添加事件侦听器

我按以下顺序做事:

var handle = function() {changeActiveState();};
var params = {"id":"active"+rowCount, "click":handle};
然后我将参数发送给一个函数,该函数在表中创建单元格

var node = document.createElement('input');
node.setAttribute("type","button");
cell.appendChild(node);
(单元格是使用var cell=row.insertCell(position);)创建的单元格)

之后,我设置了想要的属性:

for (var key in params) {
    if (params.hasOwnProperty(key)) {
        if(key == "click"){
            //addEvent(node, "onclick", params[key]);
            if(!node.addEventListener){
                node.attachEvent("onclick", params[key]);
                console.log("IE");
            }
            else{
                node.addEventListener("click", params[key], false);
                //node.setAttribute(key, "changeActiveState()");    
                // I used to do it like that with key being onclick but it didn't work with IE
                console.log("FF");
            }
            console.log(params[key]);
        }
        else node.setAttribute(key, params[key]);
    }
}
问题在于,无论是在IE还是Firefox/Chrome中,该按钮都没有onclick事件

编辑:做了一把小提琴

功能“addEvent”是什么?当它不存在并产生JS错误时,下面的代码将无法工作

下面的代码非常相似,一切正常:

var handle = function() {changeActiveState();};
var params = {"id":"active1", "click":handle};

var node = document.createElement('input');
node.setAttribute("type","button");
document.getElementById('testform').appendChild(node);

for (var key in params) {
    if (params.hasOwnProperty(key)) {
        if(key == "click"){
            //addEvent(node, "onclick", params[key]);
            if(!node.addEventListener){
                node.attachEvent("onclick", params[key]);
                console.log("IE");
            }
            else{
                node.addEventListener("click", params[key], false);
                //node.setAttribute(key, "changeActiveState()");    
                // I used to do it like that with key being onclick but it didn't work with IE
                console.log("FF");
            }
            console.log(params[key]);
        }
        else node.setAttribute(key, params[key]);
    }
}

您是否检查了是否执行了带有node.addEventListener(…)的行?console.log(“FF”);是,但在调试模式下,此时节点没有onclick。是否有任何错误消息?行addEvent(节点“onclick”,参数[key]);如果之前没有声明,可能会失败。我在问题中对其进行了注释,在我的代码中,我在该函数中附加了浏览器检测和事件,但我将其代码放在if(key==“click”)中,因此更易于阅读。在这两种情况下,它都不起作用,控制台中也没有显示任何内容。你能制作一个JSFIDLE来演示这个问题吗?看起来他在你发布答案时编辑了这个问题,因为
addEvent
现在在问题中被注释掉了。无论如何,这可能应该是一个注释(虽然我看到你还不能发表评论)@KevinB,老实说,所有这些东西都应该在代码审查中)@StepanStepanov代码审查是用于工作代码的,但此代码不工作。