@brbrs

Почему скрипт не вставляет элемент в div?

Я недавно изучаю JS и столкнулся с такой проблемой. Необходимо заполнить случайно сгенерированными элементу половину страницы html. При вставке элементов в body задача выполняется, а вот при попытке вставить в div, который занимает половину страницы, нет.

Вот так все работает:
<body>
    <div class="left"></div>
    <div class="right"></div>
    <script src="/index.js"></script>
</body>

const numBalls = 100;
const balls = [];

for (let i = 0; i < numBalls; i++) {
  let ball = document.createElement("div");
  ball.classList.add("ball");
  ball.style.background = colors[Math.floor(Math.random() * colors.length)];
  ball.style.left = `${Math.floor(Math.random() * 100)}vw`;
  ball.style.top = `${Math.floor(Math.random() * 100)}vh`;
  ball.style.transform = `scale(${Math.random()})`;
  ball.style.width = `${Math.random()}em`;
  ball.style.height = ball.style.width;
  
  balls.push(ball);
  document.body.appendChild(ball);
}


А вот так - нет:
document.getElementsByClassName("left").appendChild(ball);
  • Вопрос задан
  • 97 просмотров
Решения вопроса 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
document.querySelector(".left").appendChild(ball);

Метод getElementsByClassName возвращает коллекцию элементов, даже если он на странице один. У коллекции, соответственно, нет метода appendChild.
Ответ написан
KickeRocK
@KickeRocK
FrontFinish
document.getElement<b>s</b>ByClassName("left").appendChild(ball);

вы получаете все элементы с классом 'left' .
Либо пробегитесь each'ом
либо обратитесь к конкретному
document.getElementsByClassName("left")[0].appendChild(ball);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы