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);
}
}
Учитывая этот код, мой обратный вызов отображается в Dom как
function doAlert() {
alert('testing');
}
Это буквально в моем атрибуте onclick
. Очевидно, это не то, что я хочу. Что мне нужно сделать, это отобразит мое предупреждение? Я ожидал увидеть что-то вроде doAlert()
, почему это не так?
Значения атрибутов - это строки. Поскольку вы передаете функцию, ее метод .toString()
неявно вызывается для установки значения атрибута для onclick
.
Никогда не используйте атрибуты onclick
. addEventListener
этого используйте addEventListener
.
href.addEventListener("click", callback);