内联onclick处理程序不起作用

时间:2016-03-16 19:47:07

标签: javascript html

我想使用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

但是当我点击按钮时,我的回调不起作用。上面的代码有什么问题?感谢。

1 个答案:

答案 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事件设置监听器功能。