无法在提交之间清空数组

Can't empty array between submits

本文关键字:清空 数组 之间 提交      更新时间:2023-09-26

我一直在为这个问题而苦苦挣扎。我有一个数组,我将在按钮单击时将数字推送到类似 [2,6,8] 的数组。我尝试通过另一个按钮单击在提交之间清空数组,但我没有成功。有人可以指出我的错误吗?即使我在此之后尝试格式化和更改它多次,数组也会继续打印第一个结果。数据索引在 DOM 中也正确更改。我也试图在单击开始时清空数组 #accept 但没有效果。

var mediaArray = [];
$( "#clearAll" ).click(function() {
        mediaArray = [];
        console.log("i can see this");
});
$( "#accept" ).click(function() {
        var firstRound = true;
        var mediaLength = 0;
        var eachData = 0;
        $( ".slots" ).each(function(index) {
            if (!firstRound) {
                mediaLength++;
                if ($(this).data('index') != eachData) {
                    mediaArray.push(mediaLength);
                    mediaLength = 0;
                }
            }
            eachData = $(this).data('index');
            firstRound = false;
            console.log($(this).data('index'));
        });
        mediaArray.push(mediaLength+1);
        console.log(mediaArray);
});

很简单。这是因为每次调用单击处理程序时都会true firstRound

要修复它,您可能希望将firstRound作为全局变量,但这通常不是必需的,在这种情况下,您可以使用 IIFE 使其成为本地变量:

(function() {
    var firstRound = true;
    $( "#accept" ).click(function() {
        // ...
    });
}());

你应该声明firstRound是全局的。这将确保它仅在第一轮中设置为true。现在,每次调用 id #accept 的处理程序onClick时都会true它。