在JavaScript中的for循环中创建动态div

问题描述 投票:0回答:2

尝试遍历DOM中的div并动态呈现300次。无法访问样式化元素内的HTML。代码如下:

Current Render

JavaScript文件:

var amount = 5;
for(var i = 0; i < amount; i++){
    var new_div = document.createElement("div");
    new_div.className = "hello";
    document.body.appendChild(new_div).innerHTML;

    console.log("This is repeat " + i)
}

HTML文件:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
    <link rel="stylesheet" href="style.css" />
  </head>
  <body>
    <div class="hello">
      <p>
        Hello World!
      </p>
    </div>
    <script src="app.js"></script>
  </body>
</html>

CSS样式表:

.hello {
  width: 80%;
  margin: 0 auto;
  padding: 20px;
  text-align: center;
  border-style: outset;
  border-width: 5px;
  border-color: #d36135;
}

我希望能够按照精确样式多次渲染第一个div。

javascript html loops for-loop dom
2个回答
1
投票

为什么在append方法的末尾访问innerHTML?不需要那会导致问题。

工作示例:

var amount = 5;
for(var i = 0; i < amount; i++){
    var new_div = document.createElement("div");
    new_div.className = "hello";
    document.body.appendChild(new_div);

    console.log("This is repeat " + i)
}
.hello {
  width: 80%;
  margin: 0 auto;
  padding: 20px;
  text-align: center;
  border-style: outset;
  border-width: 5px;
  border-color: #d36135;
}
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
    <link rel="stylesheet" href="style.css" />
  </head>
  <body>
    <div class="hello">
      <p>
        Hello World!
      </p>
    </div>
    <script src="app.js"></script>
  </body>
</html>

0
投票

为什么不将元素包含在变量中并在循环中使用它:

var amount = 5;
var new_div = document.querySelector("div.hello").outerHTML;
for(var i = 0; i < amount; i++){
  document.body.insertAdjacentHTML('beforeend', new_div);
}
.hello {
  width: 80%;
  margin: 0 auto;
  padding: 20px;
  text-align: center;
  border-style: outset;
  border-width: 5px;
  border-color: #d36135;
}
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
    <link rel="stylesheet" href="style.css" />
  </head>
  <body>
    <div class="hello">
      <p>
        Hello World!
      </p>
    </div>
    <script src="app.js"></script>
  </body>
</html>
© www.soinside.com 2019 - 2024. All rights reserved.