首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript在div createElement中创建5 img

Javascript在div createElement中创建5 img
EN

Stack Overflow用户
提问于 2016-03-04 22:40:39
回答 3查看 72关注 0票数 0

我试图在我的div#leftside中的5个不同的地方创建5张图片。我确实创建了5个图像,但它们处于相同的位置,并且不是随机分布在我的div中。这是一个密码..。有人能帮忙吗?

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head http-equiv="content-type" content="text/html; charset=utf-8">
    <title>Matching game</title>
    <style type="text/css">
        img {position: absolute;}
        div {position: absolute;width: 500px;height: 500px;}
        #rightSide { left: 500px;
            border-left: 1px solid black }
    </style>
    <script type="text/javascript">
    function generateFaces() {
        var numberOfFaces = 5;
        var theLeftSide = document.getElementById("leftSide");
        var i = 0;
        var topvar = (Math.floor(Math.random()*400));
        var leftvar = (Math.floor(Math.random()*400));
        if (i < 5){ 
            numberOfFaces = document.createElement("img");
            i++;
            numberOfFaces.src = "http://home.cse.ust.hk/~rossiter/mooc/matching_game/smile.png";
            numberOfFaces.style.top = topvar + 'px';
            numberOfFaces.style.left = leftvar + 'px';
            theLeftSide.appendChild(numberOfFaces);
        }

            
    }
    </script>
</head>
<body onload="generateFaces()">
<p>Click on the extra smiling face on the left.</p>
<div id="leftSide"></div>
<div id="rightSide"></div>

</body>
</html>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-04 22:47:00

当您打算使用while循环时,您正在使用if语句。另外,您还需要将定位逻辑移到循环中。

https://jsfiddle.net/knwL2bn4/

重构:

代码语言:javascript
复制
    <!DOCTYPE html>
<html lang="en">
<head http-equiv="content-type" content="text/html; charset=utf-8">
    <title>Matching game</title>
    <style type="text/css">
        img {position: absolute;}
        div {position: absolute;width: 500px;height: 500px;}
        #rightSide { left: 500px;
            border-left: 1px solid black }
    </style>
    <script type="text/javascript">
        function generateFaces() {
            var numberOfFaces = 5;
            var theLeftSide = document.getElementById("leftSide");
            var i = 0;

            while (i < 5){ 
                var topvar = (Math.floor(Math.random()*400));
                var leftvar = (Math.floor(Math.random()*400));
                numberOfFaces = document.createElement("img");
                i++;
                numberOfFaces.src = "http://home.cse.ust.hk/~rossiter/mooc/matching_game/smile.png";
                numberOfFaces.style.top = topvar + 'px';
                numberOfFaces.style.left = leftvar + 'px';
                theLeftSide.appendChild(numberOfFaces);
            }


        }
    </script>
</head>
<body onload="generateFaces()">
<p>Click on the extra smiling face on the left.</p>
<div id="leftSide"></div>
<div id="rightSide"></div>

</body>
</html>
票数 1
EN

Stack Overflow用户

发布于 2016-03-04 22:47:40

您应该使用for循环

代码语言:javascript
复制
function generateFaces() {
            var numberOfFaces = 5;
            var theLeftSide = document.getElementById("leftSide");
            var i;
      for (i = 0; i < 5; i += 1) {
            var topvar = (Math.floor(Math.random()*400));
            var leftvar = (Math.floor(Math.random()*400));
            numberOfFaces = document.createElement("img");
            numberOfFaces.src = "http://home.cse.ust.hk/~rossiter/mooc/matching_game/smile.png";
            numberOfFaces.style.top = topvar + 'px';
            numberOfFaces.style.left = leftvar + 'px';
            theLeftSide.appendChild(numberOfFaces);
        }
    }
票数 0
EN

Stack Overflow用户

发布于 2016-03-04 23:01:03

不太清楚你想要做什么,但我在Fiddle中重写了它。你可能不得不调整它,让它做你想做的事:

小提琴

HTML

代码语言:javascript
复制
<body>
  <p>Click on the extra smiling face on the left.</p>
  <div id="leftSide"></div>
  <div id="rightSide"></div>
</body>

Javascript

代码语言:javascript
复制
function generateFaces() {
  var face;
  var theLeftSide = document.getElementById("leftSide");
  for (i = 0; i < 5; i++) {
    var topvar = (Math.floor(Math.random() * 400));
    var leftvar = (Math.floor(Math.random() * 400));
    face = document.createElement("img");
    face.src = "http://home.cse.ust.hk/~rossiter/mooc/matching_game/smile.png";
    face.style.top = topvar + 'px';
    face.style.left = leftvar + 'px';
    theLeftSide.appendChild(face);
  }
}
generateFaces();

CSS

代码语言:javascript
复制
img {
  position: absolute;
}

div {
  position: absolute;
  width: 500px;
  height: 500px;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35807390

复制
相关文章

相似问题

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