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