Proponuję dodanie nowych "pozycji" w formularzu przez pobranie ich z template-a (oczywiście template-a możesz "rozbudować" według własnego uznania).
Przykład
<form id="form-personal-data">
<div class="row">
Imię <input type="text" name="name">
Nazwisko <input type="text" name="surname">
</div>
</form>
<template id="tmpl-personal-data">
<div class="row">
Imię <input type="text" name="name">
Nazwisko <input type="text" name="surname">
</div>
</template>
<button id="add-new-person">Nowa pozycja</button>
form, input, button {
font: 300 1em monospace;
margin: 0.5em;
}
const form_personal_data = document.querySelector('#form-personal-data'),
tmpl_personal_data = document.querySelector('#tmpl-personal-data'),
button_add_new_person = document.querySelector('#add-new-person');
button_add_new_person.addEventListener('click', () => {
const new_personal_data = tmpl_personal_data.content.cloneNode(true);
form_personal_data.appendChild(new_personal_data);
});