我解决了问题
我在下一行添加了一个超时函数,用于清空数组。
我是一个新的javascript,这是我的代码
数组是一个带有跨度的数组。
pickedArray[0].removeClass('show');
pickedArray[1].removeClass('show');
这可行,但速度太快。
然而,当我喜欢这个时
setTimeout(function(){
pickedArray[0].removeClass('show');
pickedArray[1].removeClass('show');
}, 100);
我收到错误“无法读取未定义的属性'removeClass'”
我该如何纠正?
由于
这是我的代码,我知道它很乱,但我只是想让它起作用。
var activeCards = 0;
var firstPick = 0;
var secondPick = 0;
var pickedArray = [];
$('.card').click(function() {
console.log('I was clicked.' + ' ' + activeCards);
activeCards++;
var span = $(this).find('span');
pickedArray.push(span);
console.log(span.text())
span.addClass('show')
if (activeCards == 1) {
firstPick = span.text();
} else {
secondPick = span.text();
activeCards = 0;
if (firstPick == secondPick) {
console.log(firstPick + " " + secondPick)
setTimeout(function() {
alert("You got a match");
}, 100);
pickedArray[0].parent().addClass('matched');
pickedArray[1].parent().addClass('matched');
} else {
setTimeout(function() {
pickedArray[0].removeClass('show');
pickedArray[1].removeClass('show');;
}, 100);
}
pickedArray = []
}
});
答案 0 :(得分:0)
在致电setTimeout
后,您立即说:
pickedArray = []
用空数组覆盖它。
100ms之后,pickedArray[0]
因此未定义。
您可以将数组作为参数传递给函数:
setTimeout(function(myArray) {
myArray[0].removeClass('show');
myArray[1].removeClass('show');;
}.bind(null, pickedArray), 100);