Создание динамических c делений в для l oop в JavaScript - PullRequest
1 голос
/ 08 февраля 2020

пытается l oop через div в DOM и динамически отображать его 300 раз. Возникли проблемы с доступом к HTML внутри элемента стиля. Код:

Текущий рендер

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 несколько раз, так как он точно стилизован.

Ответы [ 2 ]

2 голосов
/ 08 февраля 2020

Почему вы обращаетесь к внутреннему HTML в конце метода добавления? В этом нет необходимости, и это вызывает проблему.

Рабочий пример:

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 голосов
/ 08 февраля 2020

Ваш код работает нормально, но, кажется, вы хотите клонировать первый элемент

var amount = 5;

for (var i = 0; i < amount; i++) {
  let elem = document.getElementById("hello").cloneNode(true);
  elem.id = 'hello_' + i;
  document.body.appendChild(elem);
}
.hello {
  width: 80%;
  margin: 0 auto;
  padding: 20px;
  text-align: center;
  border-style: outset;
  border-width: 5px;
  border-color: #d36135;
}
<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" id='hello'>
    <p>
      Hello World!
    </p>
  </div>
  <script src="app.js"></script>
</body>

</html>
...