DOM Javascript删除子节点

时间:2015-11-11 04:41:58

标签: javascript dom

我正在学习编码,我需要一些帮助。我尝试了一些东西但是没有用。 我必须做一个游戏,最后我必须这样做:

**此评估任务要求您制作互动游戏。游戏开始时,左侧显示五个面,右侧显示四个面。左侧和右侧是相同的,除了一件事:左侧有一个额外的脸。用户需要单击该额外的面部。如果单击除正确面部以外的任何内容,则会显示一条消息,指出游戏已结束。如果单击了正确的面部,则会删除当前显示的所有面部,并在随机位置显示一组新的面部。每次显示一组新的面部时,左侧和右侧的面将比之前多5个。左边总会有一个额外的脸。

例如,假设你正在玩上图所示的游戏。单击额外的面部(在顶部)后,所有面部都会消失,并显示以下新的面部组。**

  

删除子节点
  请记住,每次玩家点击正确的脸部时,所有脸部都会被移除,并会生成一组新的脸部。这意味着在适当的位置需要删除leftSide div和rightSide div下的所有子节点。您之前学习过如何使用while循环删除课程中的所有子节点。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Matching Game</title>
<style>
    img {position: absolute;}
    div {position: absolute; width: 500px; height: 500px;}
    #rightSide {left: 500px; border-left: 1px solid black;}
</style>
<script>
    index = 0;
    var numberOfFaces = 5;
    var theLeftSide = document.getElementById("leftSide");
    var theRightSide = document.getElementById("rightSide");

            function generateFaces() {
                while (index<numberOfFaces) {
                    var images = document.createElement("img");
                    images.setAttribute("src", "http://home.cse.ust.hk/~rossiter/mooc/matching_game/smile.png");
                    images.style.left = Math.floor(Math.random() * 400 ) + "px";
                    images.style.top = Math.floor(Math.random() * 400 ) + "px";
                    document.getElementById("leftSide").appendChild(images);
                    index++;
                }
                leftSideImages = document.getElementById("leftSide").cloneNode(true);
                leftSideImages.removeChild(leftSideImages.lastChild);                   
                document.getElementById("rightSide").appendChild(leftSideImages);    
                var theBody = document.getElementsByTagName("body")[0];
                document.getElementById("leftSide").lastChild.onclick = function nextLevel(event) { 
                    event.stopPropagation();
                    //var delete_nodes = document.getElementById("leftSide");
                    //while (delete_nodes.firstChild)
                    //  delete_nodes.removeChild (delete_nodes.firstChild);
                    numberOfFaces += 5;
                    generateFaces();    
                };
                theBody.onclick = function gameOver() {
                    alert("Game Over!");
                    theBody.onclick = null;
                    theLeftSide.lastChild.onclick = null;
                }; 
            }
</script>
</head>
<body onload="generateFaces()">
<h1>Matching Game</h1>
<p>Click on the extra smiling face on the left</p>
<div id="leftSide"></div>
<div id="rightSide"></div>
</body>
</html>

谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

此评估任务要求您制作互动游戏。游戏开始时,左侧显示五个面,右侧显示四个面。左侧和右侧是相同的,除了一件事:左侧有一个额外的脸。用户需要单击该额外的面部。如果单击除正确面部以外的任何内容,则会显示一条消息,指出游戏已结束。如果单击了正确的面部,则会删除当前显示的所有面部,并在随机位置显示一组新的面部。每次显示一组新的面部时,左侧和右侧的面将比之前多5个。左边总会有一个额外的脸。

例如,假设你正在玩上图所示的游戏。单击额外的面(在顶部)后,所有面都会消失,并显示以下新的面集。

相关问题