我是新来的Javascript和我试图调用JavaScript中的循环内的另一个函数内的函数。我阅读了关于JS循环中关闭和范围的所有答案,但仍然无法使其工作。基本上我试图做的是将一个事件监听器附加到数组的每个元素。Javascript - 函数里面的功能循环
这里是我的代码:
HTML:
<div class="todo-item">
To Do item #1
<button class="btn btn-success btn_task" data-name="data1">Done</button>
</div>
<div class="todo-item">
To Do item #2
<button class="btn btn-success btn_task" data-name="data2">Done</button>
</div>
<div class="todo-item">
To Do item #3
<button class="btn btn-success btn_task" data-name="data3">Done</button>
</div>
JS功能的更新HTML通过AJAX:
function showTodo(str, label) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("todo").innerHTML = this.responseText;
}
};
xmlhttp.open("GET", "../datasource.php?lang=" + label + "&data=" + str, true);
xmlhttp.send();
}
的部分不工作:
var todoElements = document.getElementsByClassName("btn_task");
for (var i = 0; i < todoElements.length; i++) {
(function(index) {
todoElements[index].addEventListener("click", function(){
var attribute = todoElements[index].getAttribute('data-name');
showTodo(attribute, "Spanish");
})
})(i);
}
什么是“不工作“? –
为什么你需要循环里面的函数? –
@LeszekRepie:将一个事件绑定到每个'.btn_task'元素。 –