За да разширим това, което @Logan Wayne посочи...
Така че във вашия JavaScript, когато вземете препратки към вашите елементи от данни в таблица, винаги ще получите ПЪРВОТО копие на обект Document с какъвто и да е идентификатор, който предоставите.
// 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
Ще трябва или да присвоите уникални идентификатори на вашите td обекти, или, отново както спомена @Logan Wayne, да използвате свойството клас на HTML DOM обекти.
Класовете могат да се използват за групиране на подобни елементи. След като присвоите имена на класове на различните колони във вашата таблица (Продукт , Промоционална цена , Редовна цена , Натрупване ) можете да използвате getElementsByClassName() за да получите масив от td елементи.
...
var products = document.getElementsByClassName("product"); <-- array of product td elements
...