Почему не работает for внутри append?
Потому что это синтаксическая ошибка. Цикл for не будет возвращать подобным образом массив с шестью элементами, которые вы пытаетесь вставить как набор HTML тегов в элемент с классом
second.
Чтобы добиться желаемого результата, конкретно в данном случае, вы можете сделать например так:
const getSetOfElements = () => {
let arr = [];
for (let i = 1; i <= 6; i++) {
arr.push(`<div class="test">${i}</div>`);
}
return arr;
}
const setOfElements = getSetOfElements();
$('.second').append(`<p>hello</p> ${setOfElements.join("")}`);
Или:
const setOfElements = [...Array(6)].map((_, i) => (`<div class="test">${i + 1}</div>`)).join("");
$('.second').append(`<p>hello</p> ${setOfElements}`);
Чтобы более корректно описать суть вашей ошибки, понадобиться много букв и возможно вам будет не интересно читать, а мне жалко тратить своё время. Поэтому можете пройтись по документации, ознакомиться с синтаксисом языка. Многое сразу встанет на свои места.