Per approfondire ciò che @Logan Wayne ha sottolineato...
Quindi, nel tuo JavaScript, quando prendi i riferimenti agli elementi dei dati della tua tabella, otterrai sempre la PRIMA istanza di un oggetto Document con qualunque ID fornisca.
// 2. Define what to do when XHR feed you the response from the server - Start
var product = document.getElementById("product").value; <-- will always return the same element
var pp1 = document.getElementById("pp1").value; <-- will always return the same element
var rp1 = document.getElementById("rp1").value; <-- will always return the same element
var stacking = document.getElementById("stacking").value; <-- will always return the same element
Dovrai assegnare ID univoci ai tuoi oggetti td o, sempre come menzionato da @Logan Wayne, utilizzare la proprietà class degli oggetti DOM HTML.
Le classi possono essere utilizzate per raggruppare elementi simili. Dopo aver assegnato i nomi delle classi alle diverse colonne della tabella (Prodotto , Prezzo promozionale , Prezzo normale , Impilatura ) puoi usare getElementsByClassName() per ottenere un array degli elementi td.
...
var products = document.getElementsByClassName("product"); <-- array of product td elements
...