好的,这是我的问题。我对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的“内部”值,但这是另一回事了。)

07-24 09:26