无法在提交之间清空数组

时间:2016-04-22 11:05:13

标签: javascript jquery html arrays

我很久以来一直在努力解决这个问题。我有一个数组,我按下按钮点击数字就像[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);
});

2 个答案:

答案 0 :(得分:3)

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

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

(function() {

    var firstRound = true;

    $( "#accept" ).click(function() {
        // ...
    });

}());

答案 1 :(得分:0)

您应该声明firstRound是全球性的。这将确保仅在第一轮中将其设置为true。现在,每次调用true处理程序onClick时,#accept都是print("These \n linebreaks don't work:\n", 1) "These \n linebreaks don't work:\n", 1 print("These \n work fine\n") These work fine