JavaScript将事件添加到同一类名的元素

时间:2015-01-16 10:56:15

标签: javascript html css

我在收到JSON后生成了一些元素。那些类名为“tipoGenero”的元素有一些CSS。我希望当单击任何这些元素时,显示<span>的值。然而,它工作并生成事件,但无论我点击什么元素我只得到最后一个的值。

for (var i = 0; i < parsedText.length; i++) {
    dato += "<div class='tipoGenero'>";
    dato += "<img src=/logos/" + parsedText[i].imagen + ">";
    dato += "<span>" + parsedText[i].nombre + "</span>";
    dato += "</div>";
} 
document.getElementById('generos').innerHTML = dato;
//generates events for class items 
var classname = document.getElementsByClassName("tipoGenero");
for (var i = 0; i < classname.length; i++) {
    valor = classname[i].children[1].textContent;
    alert(valor);
    classname[i].addEventListener('click', function() { myFunction(valor); }, false);
}

function myFunction(text) {
    alert(text);
}

1 个答案:

答案 0 :(得分:1)

你必须保存&#39; valor&#39;的当前值。在你的听众中:可以这样做:

&#13;
&#13;
classname[i].addEventListener('click', function(val){
    return function(){
        myFunction(val);
    };
})(valor), false);
&#13;
&#13;
&#13;