Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou gerando uma tabela no corpo html com javascript
function responseAllHours(ObJson){
//Função que trabalha com multiplas arrays e elementos
var ObJS = JSON.parse(ObJson);
var divMain = document.getElementById("main");
var constructor = '<table><thead><tr><th colspan="3">Lista de horários</th></tr><tr><th colspan="1">Semana</th><th colspan="1">Sábado</th><th colspan="1">Domingo</th></tr></thead><tbody>';
var lista1 = ObJS[0].split(",");
var lista2 = ObJS[1].split(",");
var lista3 = ObJS[2].split(",");
for(i = 0; i <= lista1.length -1; i++){
constructor += '<tr id="list' + i + '">' + '<td>' + lista1[i] + '</td>';
}
constructor += '</tbody></table>';
divMain.innerHTML = constructor;
for(i=0; i <= lista2.length -1; i ++){
document.getElementById("list" + i).innerHTML = '<td>' + lista2[i] + '</td>';
}
for(i=0; i <= lista3.length -1; i ++){
document.getElementById("list" + i).innerHTML = '<td>' + lista3[i] + '</td>';
}
}
Porém as duas ultimas partes não estão sendo construídas:
for(i=0; i <= lista2.length -1; i ++){
document.getElementById("list" + i).innerHTML = '<td>' + lista2[i] + '</td>';
}
for(i=0; i <= lista3.length -1; i ++){
document.getElementById("list" + i).innerHTML = '<td>' + lista3[i] + '</td>';
}
Então resolvi dar um break antes de chegar nos dois últimos laços, e para minha surpresa, a tabela não é montada antes do fim da função, logo o "document.getElementById" não localiza o elemento...
Então estou sem saber o que fazer. Gostaria de ressaltar que solicito a montagem da tabela antes de iniciar os próximos laços ("divMain.innerHTML = constructor;")
Olha sua descrição não condiz com o problema real o problema pelo test que fiz não é que os dados não são exibidos nas duas ultimas colunas, o problema é que você está pegando os valores da ultima posição do array. A cada "for" você substitui os dados o motivo esta nesses 2 for da lista2 e lista3 quando você usa innerHTML você está pegando o novo conteúdo e jogando entre as tags substituindo o valor anterior a solução seria colocar o sinal de concatenação "+" ficando: