javascript - 从动态创建的按钮将参数传递给事件监听器

标签 javascript

我正在动态创建 3 个按钮。如何将参数传递给handlerX

所以基本上我希望将类别数组中的值传递给 handlerX eventListener。 例子: 单击 myBtn1 时,我希望警报为“fur_”, 单击 myBtn3 时,我希望警报为“fas_”

var btns = '';
var category = ["fur_", "fts_", "fas_"];
for (i = 1; i < category.length; i++) {
    btns += '<button type="button" class=' + category[i] + ' id= "myBtn' + i + '">.....</button>';
}
var div = document.getElementById('div');
div.innerHTML = btns;

var handlerX = function () {
    alert('Clicked'); //get value from the 'category' Array
};
var buttons = div.querySelectorAll('button');
for (var i = 0; i < buttons.length; i++) {
    buttons[i].addEventListener('click', handlerX, false);
}

最佳答案

到目前为止给出的答案都很好,应该可以解决您的问题。只是想我会添加这个,因为我认为这是一个更符合您要求的解决方案:让您的 handlerX 返回一个像这样的函数:

var handlerX = function (param) {
    return function() {alert(param);};
};
var buttons = div.querySelectorAll('button');
for (var i = 0; i < buttons.length; i++) {
    buttons[i].addEventListener('click', handlerX(category[i]), false);
}

编辑:这是一个Fiddle

关于javascript - 从动态创建的按钮将参数传递给事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30026734/

相关文章:

javascript - 正则表达式不捕获字符

javascript - 对 Javascript 数组进行分组

javascript - JS 中 .push 处的代码损坏。

javascript - 模拟 'class' 时,为什么要在 .prototype 属性中而不是在构造函数本身中设置方法?

javascript - 如何在两个不同 div 中显示的两个图标之间绘制连线。

javascript - 美国 map 拉斐尔插件自动更新和动态填充颜色

javascript - rails : Image preview inside a cocoon gem field

javascript - 安全 AJAX 连接/空字符 SSL 证书攻击?

javascript - 如何让月份在 morris.js 图表中正确显示?

javascript - SetInterval mySQL 每秒查询一次