gpt4 book ai didi

javascript - 创建一个 For 循环以在 JavaScript/JQuery 中创建多个 'Click' 事件

转载 作者:数据小太阳 更新时间:2023-10-29 05:33:38 24 4
gpt4 key购买 nike

我想为我页面上的一系列“点击”事件创建一个 For 循环。我正在创建一个时间表,单击“日期”按钮将在 div 框中显示分配给该日期的事件。
HTML

<div class="cwt-buttons">
<a id="cwt-button1">Monday</a>
<a id="cwt-button2">Tuesday</a>
<a id="cwt-button3">Wednesday</a>
<a id="cwt-button4">Thursday</a>
<a id="cwt-button5">Friday</a>
<a id="cwt-button6">Saturday</a>
<a id="cwt-button7">Sunday</a>
</div>

<div id="cwt-timetable">
<div class="current">Housework</div>
<div class="cwt-Day1">Kickboxing</div>
<div class="cwt-Day2">Homework</div>
<div class="cwt-Day3">Yoga</div>
<div class="cwt-Day4">Eating</div>
<div class="cwt-Day5">Fasting</div>
<div class="cwt-Day6">Running</div>
<div class="cwt-Day7">Funeral</div>
</div>

JS

$(function() {
for ( var i = 1; i < 8; i++ ) {
var clickedButton = $("#cwt-button"+i);
$(clickedButton).click(function() {
var currentDay = $('#cwt-timetable div.current');
var selectedDay = $('#cwt-timetable div.cwt-Day'+i);
currentDay.removeClass('current').addClass('previous');
(selectedDay).css({ opacity: 0.0 }).addClass('current').animate({ opacity: 1.0 }, 1000,
function() {
currentDay.removeClass('previous');
});
})
}
});

当我有确切的值时,JavaScript 工作正常。 “#cwt-button1”
当我在循环中连接“i”计数器时,它就不起作用了。

谁能看出我错在哪里?还是我做了一些 JavaScript 无法处理的事情?

最佳答案

这只是同一个老问题,每天都会被问到多次。在循环中创建的所有函数都在相同的变量范围内创建,因此它们共享相同的 i 变量。

要确定一个变量的范围,您需要一个函数调用。 jQuery 的 $.each() 是执行此操作的便捷方法:

$(function () { // -----------v-----scoped to the function
$.each(Array(7), function(i) {
var clickedButton = $('#cwt-button' + (++i));

$(clickedButton).click(function () {
var currentDay = $('#cwt-timetable div.current');

// --------using scoped `i`------------------------v
var selectedDay = $('#cwt-timetable div.cwt-Day' + i);
currentDay.removeClass('current').addClass('previous');
(selectedDay).css({
opacity: 0.0
}).addClass('current').animate({
opacity: 1.0
}, 1000, function () {
currentDay.removeClass('previous');
});
});
});
});

关于javascript - 创建一个 For 循环以在 JavaScript/JQuery 中创建多个 'Click' 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18819689/

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