JSFiddle - React, Tailwind, and code Playground
by Tobias Mesquita
HTML
<input type="text" id="txtQuantidade" />
<input type="button" id="btnAdicionar" value="Adicionar" />
<div id="divForm" data-qtd="0">
</div>
<template id="tmplLinha">
<div>
<input type="date" id="txtData_" name="data[]">
<input type="time" id="txtHoraIni_" name="hinicio[]">
<input type="time" id="txtHoraFim_" name="hfim[]">
</div>
</template>
JavaScript
var txtQuantidade = document.getElementById("txtQuantidade");
var btnAdicionar = document.getElementById("btnAdicionar");
var divForm = document.getElementById("divForm");
var tmplLinha = document.getElementById("tmplLinha").content;
btnAdicionar.addEventListener("click", function () {
var quantidade = {};
quantidade.old = parseInt(divForm.dataset.qtd) || 0;
quantidade.new = parseInt(txtQuantidade.value) || 0;
if (quantidade.new > quantidade.old) {
for (var indice = quantidade.old; indice < quantidade.new; indice++) {
var linha = document.importNode(tmplLinha, true);
[].forEach.call(linha.querySelectorAll("input[id]"), function (input){
input.id = input.id + indice;
});
divForm.appendChild(linha);
}
} else {
var linhas = [].slice.call(divForm.children, quantidade.new);
linhas.forEach(function (linha, indice) {
divForm.removeChild(linha);
});
}
divForm.dataset.qtd = quantidade.new;
});