我尝试使用递增的 numberOfFaces 调用相同的函数,但它仅使用之前的值5加载。我究竟做错了什么?我点击左侧的最后一个孩子后,我所要做的就是重复这个功能。
var numberOfFaces = 5;
function generateFaces() {
var theRightSide = document.getElementById("rightSide");
var theLeftSide = document.getElementById("leftSide");
var theBody = document.getElementsByTagName("body")[0];
while(numberOfFaces > 0) {
// CREATING IMG ELEMENTS AND APPENDING THEM TO THE LEFTSIDE DIV
var img = document.createElement("img");
img.src = "http://home.cse.ust.hk/~rossiter/mooc/matching_game/smile.png" ;
img.style.top = Math.floor(Math.random() * 400) +"px";
img.style.left = Math.floor(Math.random() * 400) +"px";
theLeftSide.appendChild(img);
// CLONING THE LEFT SIDE DIV ELEMENTS, REMOVING THE LAST CHILD AND APPENDING THEM TO THE RIGHT CHILD
var leftSideImages = theLeftSide.cloneNode(true);
leftSideImages.removeChild(leftSideImages.lastChild);
theRightSide.appendChild(leftSideImages);
numberOfFaces--;
}
theLeftSide.lastChild.onclick = function nextLevel(event){
event.stopPropagation();
while (theLeftSide.firstChild) {
theLeftSide.removeChild(theLeftSide.firstChild);
}
while (theRightSide.firstChild) {
theRightSide.removeChild(theRightSide.firstChild);
}
numberOfFaces += 5;
generateFaces();
};
theBody.onclick = function gameOver(event) {
alert("Game Over!");
theBody.onclick = null;
theLeftSide.lastChild.onclick = null;
}
}
答案 0 :(得分:0)
下面:
numberOfFaces += 5;
generateFaces();
您的numberOfFaces
值为5
,并向其添加5
,结果为10
。之后你调用generateFaces,它会减少numberOfFaces直到它达到0
,生成10
个面,然后在下次调用时会根据期望生成5
个面。这发生在theLeftSide.lastChild.onclick
内,因此您希望代码生成面,并在单击该元素时最后numberOfFaces
为0
。但是,此click
处理程序在generateFaces
内定义,永远不会被调用,因此永远不会更改numberOfFaces
。您需要重构代码。在generateFaces
之外定义事件处理程序,之后你应该没问题。