javascript - JavaScript 为什么添加事件监听器时for循环的索引会加一
问题描述
我有一个听起来很傻的问题。在下面的代码中有 2 个console.log(i)
语句。我想知道为什么第二个console.log(i)
语句在第一次迭代时返回 2 而不是 1 作为前者的值(即 1st statement i=n
, 2nd: i=n+1
)。在循环结束之前不应该都等于 1 吗?
function toggleWrapper(){
var el1 = document.querySelectorAll('[class="tCell entryDesc"]');
for (var i = 1; i < el1.length; i++) {
console.log(i);
el1[i].addEventListener('click', function(ev){
console.log(i);
var el2=document.querySelectorAll('[class="additionalInfoContainer"]');
if (el2[i-2].clientHeight) {
el2[i-2].style.maxHeight = 0;
}
else{
el2[i-2].style.maxHeight = el2[i-2].scrollHeight +"px";
}
},
false);
}
}
解决方案
我认为这是您的代码中的某些内容,因为如果您尝试使用两个“console.log()”创建一个 for 循环,它不会那样做
推荐阅读
- apache - Apache HTAccess 未将 HeaderName 和 FooterName 应用于索引
- python - 为什么数据框不显示具有相同列的表?
- google-app-engine - 无法使用共享 VPC 将应用程序部署到 App Engine 柔性环境
- python - 如何使用 Windows 事件跟踪定位进程 ID?
- python - 尝试点击标签时 Selenium 超时
- c# - 员工时钟表的存储过程
- python - 如何根据条件从数组列表中删除数组?
- r - 如何管理多个版本的 Rtools?
- javascript - javascript: this != 窗口,属性仍未定义
- html - 如何将 css 伪选择器正确添加到 Blazor 项目