Aparte de lo que ha mencionado eLank0, no te recomiendo usar
innerHTML para tratar elementos del DOM. De hecho, no te lo recomiendo para nada que no sea modificar el DOM entero de una.
Cada vez que haces un
innerHTML +=, el navegador re-procesa todo el dom y resetea todas las instancias y valores de los elementos afectados. Así, si por alguna casualidad tienes un
checkbox en cada fila, seleccionas uno y añades otra fila, veras el que el
checkbox seleccionado volverá a su estado original. Por no hablar que a pesar de que
innerHTML esta implementado por todos los navegadores famosos, NO es un estándar.
window.onload = function(){
document.getElementById('btn').onclick = function(){
var data = {
name: document.getElementById('name').value,
quantity: document.getElementById('quantity').value,
price: document.getElementById('price').value
};
var tr = document.createElement('tr');
for(var a=0; a < Object.keys(data).length; ++a){
var td = document.createElement('td');
td.textContent = data[Object.keys(data)[a]];
tr.appendChild(td);
}
document.getElementById('data_table').appendChild(tr);
}
}
PD: Ademas,
innerHTML te puede provocar muchos dolores de cabeza cuando lo utilizas a cara del usuario... trata todo lo que le das como un código HTML, con sus respectivas posibilidades de meter XSS por ejemplo. Si vas insertar solo texto en algún lado, utiliza
textContent.
Saludos