首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dom cloneNode不工作

Dom cloneNode不工作
EN

Stack Overflow用户
提问于 2017-07-23 14:51:06
回答 1查看 977关注 0票数 0

实际问题是,我想在左侧生成五个图像,并将其克隆到右侧,我的代码是:

代码语言:javascript
复制
 <html>
    <head>
    <style>
        img{
            position: absolute;
        }
        div{
            position: absolute;
            width: 500px;
            height: 500px;
        }
        #rightSide { left: 500px; 
                    border-left: 1px solid black;
        }

    </style>
    <script>
        // var numberOfFaces = 5;
        // var theLeftSide = document.getElementById("leftSide");
        function generateFaces(){
            var numberOfFaces = 5;
            var theLeftSide = document.getElementById("leftSide");
            for (var i = 0; i < numberOfFaces; i++){
                var img = document.createElement("img");
                img.src = "smile.png";

                var randomTop = Math.random() * 400;
                var randomLeft = Math.random() * 400;
                img.style.top = randomTop + "px";
                img.style.left = randomLeft + "px";
                theLeftSide.appendChild(img);
            }
            var theRightSide = document.getElementById("rightSide");
            leftSideImages = theLeftSide.cloneNode(true);
            leftSideImages.removeChild(leftSideImages.lastChild);
            document.getElementById("rightSide").appendChild("leftSideImages");

        }

        window.onload = generateFaces;
    </script>
    </head>
    <body>
    <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>

错误消息为jspart4.html:36未捕获TypeError:无法在'Node‘上执行'appendChild’:参数1不是‘Node’类型。在generateFaces (jspart4.html:36)

有什么问题吗?

然后我想玩这个游戏,如果点击额外的微笑,生成更多,或者显示“游戏结束”,我的代码是:

代码语言:javascript
复制
function generateFaces(){

        var theLeftSide = document.getElementById("leftSide");
        for (var i = 0; i < numberOfFaces; i++){
            var img = document.createElement("img");
            img.src = "smile.png";

            var randomTop = Math.random() * 400;
            var randomLeft = Math.random() * 400;
            img.style.top = randomTop + "px";
            img.style.left = randomLeft + "px";
            theLeftSide.appendChild(img);
        }
        var theRightSide = document.getElementById("rightSide");
        leftSideImages = theLeftSide.cloneNode(true);
        leftSideImages.removeChild(leftSideImages.lastChild);
        document.getElementById("rightSide").appendChild(leftSideImages);
        var theBody = document.getElementByTagName("body")[0];
        theLeftSide.lastChild.onclick = function nextLevel(event){
            event.stopPropagation();
            while (theBody.firstChild){
                theBody.removeChild(theBody.firstChild);
            }
            numberOfFaces += 5;
            generateFaces();
        }
        theBody.onclick = function gameover(){
            alert("Game Over");
            thBody.onclick = null;
            theLeftSide.lastChild.onclick = null;

        }

    }

但是,当我点击额外的微笑或身体,没有任何反应,你能帮助解决它吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-23 15:42:54

在这里你犯了错误

代码语言:javascript
复制
document.getElementById("rightSide").appendChild("leftSideImages");

leftSideImages中删除"",如下所示

代码语言:javascript
复制
document.getElementById("rightSide").appendChild(leftSideImages);

代码语言:javascript
复制
 // var numberOfFaces = 5;
        // var theLeftSide = document.getElementById("leftSide");
        function generateFaces(){
            var numberOfFaces = 5;
            var theLeftSide = document.getElementById("leftSide");
            for (var i = 0; i < numberOfFaces; i++){
                var img = document.createElement("img");
                img.src = "smile.png";

                var randomTop = Math.random() * 400;
                var randomLeft = Math.random() * 400;
                img.style.top = randomTop + "px";
                img.style.left = randomLeft + "px";
                theLeftSide.appendChild(img);
            }
            var theRightSide = document.getElementById("rightSide");
            leftSideImages = theLeftSide.cloneNode(true);
            leftSideImages.removeChild(leftSideImages.lastChild);
            document.getElementById("rightSide").appendChild(leftSideImages);

        }

        window.onload = generateFaces;
代码语言:javascript
复制
img{
            position: absolute;
        }
        div{
            position: absolute;
            width: 500px;
            height: 500px;
        }
        #rightSide { left: 500px; 
                    border-left: 1px solid black;
        }
代码语言:javascript
复制
<html>
    <body>
    <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>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45262330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档