好的,这是我的问题。我对javascript很陌生,所以请忍受。我没有在其他地方找到这个问题,实际上我认为这是我的逻辑不符合我的意愿;-)
我正在用php和javascript设置一个记忆游戏。我的问题是,当我第一次执行clickCard函数时,它会使用变量的innerHTML值将变量firstClick设置为True,并执行secondClick等,直到效果如此之好,但是如果猜测错误,则只有secondClick变为红色。这是因为我相信第一个参数是静态的(因此可以为firstClick保存颜色的值),并且我无法提出解决方案。我已经尝试过创建诸如if else(firstClick!= 0 && firstClick!= secondClick){code}等条件的其他事情。
有人可以帮助我吗?
这是我的代码:
var firstClick = new Boolean();
firstClick.toString();
var secondClick = new Boolean();
secondClick.toString();
function clickCard(elem){
if(firstClick == 0){
firstClick = document.getElementById(elem.id).innerHTML;
elem.style.backgroundColor = "green";
//alert(firstClick);
}
else{
secondClick = document.getElementById(elem.id).innerHTML;
//alert(secondClick);
elem.style.backgroundColor = "green";
if(firstClick == secondClick){
alert(firstClick +" equals "+ secondClick);
firstClick = new Boolean();
secondClick = new Boolean();
}
else {
alert(firstClick + " equals not " + secondClick);
firstClick = new Boolean();
secondClick = new Boolean();
document.getElementById(elem.id).style.backgroundColor="red";
}
}
}
最佳答案
您的代码中有几个问题。查看我的更改并尝试理解它们,它应该可以工作:
用var bool = true/false;
初始化布尔值
不要将布尔值与dom元素混合使用
将图块保存在单独的变量中
实际上将第一个图块的颜色设置为“红色”
码:
var firstClick = true;
var piece1;
var piece2;
function clickCard(elem){
if(firstClick){
piece1 = document.getElementById(elem.id);
piece1.style.backgroundColor = "green";
firstClick = false;
} else {
piece2 = document.getElementById(elem.id);
piece2.style.backgroundColor = "green";
if(piece1.innerHTML == piece2.innerHTML){
alert(firstClick +" equals "+ secondClick);
} else {
alert(firstClick + " equals not " + secondClick);
piece1.style.backgroundColor="red";
piece2.style.backgroundColor="red";
}
firstClick = true;
}
}
现在,高级实践是将其放入一个闭包中以保护firstClick和piece1 / 2的“内部”值,但这是另一回事了。)