Ваша проблема в том, что при каждом нажатии кнопки вы запускаете целую l oop - каждый раз, когда вы нажимаете кнопку, она запускается от начала до конца. Я предполагаю, что вы хотите печатать один абзац за раз, увеличивая счетчик одновременно на один.
Вы можете использовать функцию обратного вызова, которая использует внешнюю переменную, чтобы узнать, что такое последовательный абзац число вроде этого:
let i = 1;
document.getElementById("makeP").onclick = () => {
if (10 >= i) { // limit the number of paragraphs to 10
return;
}
const text = "this is the paragraph ";
const para = document.createElement("p");
const node = document.createTextNode(text + i);
para.appendChild(node);
const element = document.getElementById("block");
element.appendChild(para);
++i;
}
Также рекомендуется объявлять токены, значение которых не изменится в вашей программе, как константы. Каждый абзац уже должен быть в отдельной строке, так как абзац html отображается как блок в браузере, поэтому он будет занимать всю ширину родительского контейнера (здесь весь документ).
Надеюсь, это поможет, удачи в обучении JS!