所以我创建了一个匹配的游戏,这是我的点击监听器:
let clicked = -1;
var values = [];
//on click listener function for squares
var box_clicked = function(box){
box.addEventListener("click", function(){
clicked = clicked + 1;
//HERE ARE THE VALUES THAT I WANT TO COMPARE
var value = this.innerHTML;
values.push(value);
if(clicked === 2){
twoClicked();
}
console.log(clicked);
$(this).addClass("fade z-index");
});
}
因此,当点击等于2并调用twoClicked()函数时,此代码将运行:
var twoClicked = function(){
$("div").removeClass("fade z-index");
clicked = 0;
var third_value = values.pop(2);
console.log(values);
var x = values.indexOf(0);
var y = values.indexOf(1);
alert(x);// this alerts -1 for some reason
alert(y);// this alerts -1
//if x and y equal then alert "A MATCH"
values = [];
values.push(third_value);
}
如果我提醒x或y它返回-1,为什么它不能给我我点击的两个方框的值。
check out the game here 如果您想要完整的代码,请查看here
答案 0 :(得分:2)
indexOf函数返回找到值的第一个元素的索引。如果在数组中找不到该值,则返回-1。
此代码
var x = values.indexOf(0);
...将返回包含0的第一个元素的索引。如果没有元素设置为0,则返回-1。
如果你想要索引为0的元素的值,只需使用:
var x = values[0];