我想使用INLINE回调函数,所以我有以下html标记:
var callback = function (index) {
return function () {
return action.delete({
index: index
})
}
}
var markup = items.map(function (item, index) {
return ('<button onclick="return ' + callback(index) + ';">Delete</button>')
}).join('\n')
document.getElementById('main').innerHTML = markup
但是当我点击按钮时,我的回调不起作用。上面的代码有什么问题?感谢。
答案 0 :(得分:1)
在你的情况下callback(index)
返回函数,但是当它与字符串.toString()
连接时,隐式调用函数方法并将函数体作为字符串返回。
您的代码应如下所示:
var callback = function (index) {
return action.delete({
index: index
});
}
var markup = items.map(function (item, index) {
return ('<button onclick="return callback(' + index + ');">Delete</button>')
}).join('\n')
document.getElementById('#main').innerHTML = markup
在这种情况下,必须在全局范围内定义callback
函数。
最好使用addEventListener
为click事件设置监听器功能。