javascript - 循环节点列表中的所有元素时变量错误

标签 javascript html events dom getelementsbytagname

我创建了一个选择 2 个 div 的节点列表。然后我创建一个函数来显示用户单击的 div 的索引。但输出总是2。我不知道错误在哪里。

这只是一个简单的问题,但它将解决我在事件中包含许多事件的其他复杂问题。谢谢。

HTML:

<div style="background:red; height:50px"></div>
<div style="background:black; height:50px"></div>

Javascript:

var div = document.getElementsByTagName('div');

for (i = 0; i < div.length; i++) {
    div[i].onclick = function() {
        alert(i);
    }
}

示例: https://jsfiddle.net/vutienphat/tm279uot/

最佳答案

输出始终为 2,因为您正在提醒增量变量,该变量在有人单击时已经结束。请考虑以下代码逻辑

function index(element) {
    for ( var i = 0; element = element.previousElementSibling; i++ );
    return i;
}

divs = document.getElementsByTagName('div');

for (i = 0; i < divs.length; i++) {
    divs[i].onclick = function() {
        alert(index(this));
    }
}
<div style="background:red; height:50px"></div>
<div style="background:black; height:50px"></div>

关于javascript - 循环节点列表中的所有元素时变量错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32804145/

相关文章:

JavaScript 正则表达式?或者其他非常正确的文本输入方法

javascript - Angular 不更新 Controller 中的 $scope 变量

javascript - ReactJS + Material-UI : How to reduce column width of Material-UI's <TableRow/>?

c# - 在不知道事件名称的情况下删除事件

javascript - CSSStyleSheet.insertRule - 使用 Javascript 的索引和动态变量问题

javascript - 在用户请求后加载 Ember.JS 模板(即单击提供该模板的链接)?

javascript - 单击时显示和隐藏图像

android - 在 Android 软键盘的文本区域中显示转到按钮而不是返回

javascript - 监听 Ajax 调用,而无需在 AJAX 调用本身中键入其他代码

javascript - 使用 jquery 列出页面上连接的所有 javascript 事件