为什么不调用我的回调?

时间:2018-07-16 08:17:39

标签: javascript callback

[d_0, d_1, ..., d_{r-1}, num_classes]

给出此代码,我的回调在Dom中显示为

var handler = new Handler();

var iife = (function() {
    return {
        doAlert: doAlert
    };

    function doAlert() {
        alert('testing');
    }
})();

function Bar(){
  this.doFirst = function(){
    handler.add("x", iife.doAlert);
  }
}

function Handler(){
  this.add = function(caption, callback){
    var linkText = document.createTextNode(caption);
    var href = document.createElement("a");
    href.appendChild(linkText);
    href.setAttribute("href", "#");
    href.setAttribute("onclick", callback);

    $(".bc").append(href);
  }
}

这实际上是在我的function doAlert() { alert('testing'); } 属性中。显然这不是我想要的。我需要怎么做才能显示警报?我本来希望看到类似onclick的东西,为什么不这样呢?

1 个答案:

答案 0 :(得分:6)

属性值是字符串。由于您正在传递函数,因此会隐式调用其.toString()方法来设置onclick的属性值。

请勿使用onclick属性。 Use addEventListener instead

href.addEventListener("click", callback);