gpt4 book ai didi

javascript - 绑定(bind)事件监听器时在循环 :variable declared in loop not being properly presetting into handler function, 中关闭

转载 作者:行者123 更新时间:2023-11-30 07:05:50 25 4
gpt4 key购买 nike

我正在为自动化单元测试编写一个日志记录函数。

html元素结构:

<li> 
<strong>
<ol>
<li>
<strong>
<ol>

我想在点击 <strong> 时制作它, <ol>在同一<li>下被切换。

代码:

for(var i = 0, l = logSuites.length; i < l; i++) {
var suite = logSuites[i];
$("#tests").append('<li><strong>....</strong></li>');
var suiteSl = $('#tests > li:nth-child(' + (i + 1) + ')');
var caseli = "<li>...</li>...";
...
suiteSl.append('<ol style="display:none">' + caseli + '</ol>');
var caseLiSl = suiteSl.children('ol');
var toggleCases = function() {
caseLiSl.toggle();
};
suiteSl.children('strong').bind('click', toggleCases);
}

问题是每次触发事件时,最后一个 <ol>被切换..变量caseLiSl在函数中 toggleCases总是最后一次入驻for循环

最佳答案

这是一个更常见的问题。我们在循环(for 或 while)中使用闭包,它始终保持增量的最后一个值。

可以在这个问题中找到答案:Doesn't JavaScript support closures with local variables?

关于javascript - 绑定(bind)事件监听器时在循环 :variable declared in loop not being properly presetting into handler function, 中关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9870813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com