Я пытаюсь добавить элемент, используя:
let el = `<div></div>`;
document.body.appendChild(el);
Я заметил, что el отображается как «строка» в console.info. Должен ли я вместо этого добавлять элемент через createElement?
код:
let topPos = (Math.random() * 100) + '%'
let leftPos = (Math.random() * 100) + '%'
let bubbleMd = `
<div class = "bubble bubble-md"></div>
`;
let layer = document.getElementsByClassName('layer3')
layer.appendChild(bubbleMd).setAttribute(
'style',`top: ${topPos}; left: ${leftPos};`
);



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


а) да, вам нужно использовать createElement, потому что appendChild ожидает HTMLElement, а не строку, б) слой - это список узлов, поэтому у него нет метода appendChild
Так:
let topPos = (Math.random() * 100) + '%'
let leftPos = (Math.random() * 100) + '%'
let bubbleMd = createElemnt('div');
bubbleMd.classList.add('bubble', 'bubble-md');
bubbleMd.style=`top: ${topPos}; left: ${leftPos};`;
let layer = document.getElementsByClassName('layer3')[0]; // note the [0]
layer.appendChild(bubbleMd);
что выводит console.info(document.getElementsByClassName('layer3').length)?
console.info(document.getElementsByClassName('layer3').length) выходы 0так что это ваша проблема - я не могу исправить это в своем ответе, поскольку а) вы никогда не упоминали об этом в вопросе и б) вы не показывали HTML: p
Так что я использовал
document.createElement, и теперь я получаюTypeError: Cannot read property 'appendChild' of undefined. Когда я запускаю console.info, я получаю следующее:bubbleMd: [object HTMLDivElement] layer3: undefined