Aby rozwinąć to, na co zwrócił uwagę @Logan Wayne...
Tak więc w swoim JavaScript, kiedy pobierzesz odniesienia do elementów danych tabeli, zawsze otrzymasz PIERWSZĄ instancję obiektu Document z dowolnym identyfikatorem, który podasz.
// 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
Będziesz musiał albo przypisać unikalne identyfikatory do swoich obiektów td, albo, jak wspomniał @Logan Wayne, wykorzystać właściwość class obiektów HTML DOM.
Klasy mogą służyć do grupowania podobnych elementów. Po przypisaniu nazw klas do różnych kolumn w tabeli (Produkt , Cena promocyjna , Cena normalna , Układanie ) możesz użyć getElementsByClassName() aby uzyskać tablicę elementów td.
...
var products = document.getElementsByClassName("product"); <-- array of product td elements
...