将按钮集成到 orderedlist 中并使用它来使用 javascript 获取 orderedlist 数据的最佳设计是什么
What is the best design to integrate a button in orderedlist and use it to get orderedlist data using javascript
背景:
我正在从后端获取杂货商品的详细信息,我想要一种设计,可以通过单击按钮将每个商品添加到购物车 "Add To Cart"。我正在如下所示渲染数据,但无法继续。
javaScript 代码:
function displayStoreInventory()
{
var groceryStoreUrl = "http://127.0.0.1:8080/groceryStore";
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
try
{
if (this.readyState == 4 && this.status == 200) {
var itemArray = JSON.parse(this.responseText);
var list = "<ol id='itemList'>";
for(var i in itemArray)
{
var l = "<ul>" +
"<li>" + itemArray[i].brand + " : " + itemArray[i].category + "</li>" +
"<li>" + "Price: " + itemArray[i].price + "</li>" +
**"<button class=btnAddToCart onclick=addToCart()>Add to Cart</button>**<br><br>" +
"</ul>";
list += "<li>" + l + "</li><br><br>";
}
list += "</ol>";
document.getElementById("idDisplayStore").innerHTML = list;
}
}
catch(erMs)
{
document.getElementById("idDisplayStore").innerHTML = erMs;
}
};
xhttp.open("GET", groceryStoreUrl, true);
xhttp.setRequestHeader('Content-Type', 'application/json');
xhttp.send();
}
我在 javaScript 中有另一个功能,用于将商品添加到购物车,我需要实现它,但卡在了那里。
function addToCart()
{
/* Need to implement this. So that I can send that particular selected Item to backend to add to cart.*/
}
问题:
1.On 点击按钮,只有那个项目应该被发送到购物车。我不知道如何只访问该元素,因为在我的设计中我无法知道单击了哪个按钮。
2.If谁有更好的设计或者link给post解释一下,请提一下。
PS:这不是一个从javascript中的无序列表访问数据的简单问题。我想知道在前端开发中针对此类问题遵循的最佳设计。
通常,您的 JSON.parse(this.responseText)
中的每个后端产品都应该有不同的标识符(它们可以是长数字、字符串 + 数字等)
然后将其作为 data-product-id
应用到您的“添加到购物车”按钮中。
从那里删除内联 onClick 函数,这不是好的做法。
然后在您的全局 javascript 文件中添加 eventListerner 以点击添加到购物车按钮,您将在其中获得当前 data-product-id
。在你得到这个之后 - 你会知道究竟是哪个产品被点击添加到购物车。
然后根据您的后端逻辑,您可能需要使用此 ID 向服务器发送 ajax 请求,以便让服务器知道该产品已添加到购物车。
如果您有其他问题,请告诉我。
背景:
我正在从后端获取杂货商品的详细信息,我想要一种设计,可以通过单击按钮将每个商品添加到购物车 "Add To Cart"。我正在如下所示渲染数据,但无法继续。
javaScript 代码:
function displayStoreInventory()
{
var groceryStoreUrl = "http://127.0.0.1:8080/groceryStore";
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
try
{
if (this.readyState == 4 && this.status == 200) {
var itemArray = JSON.parse(this.responseText);
var list = "<ol id='itemList'>";
for(var i in itemArray)
{
var l = "<ul>" +
"<li>" + itemArray[i].brand + " : " + itemArray[i].category + "</li>" +
"<li>" + "Price: " + itemArray[i].price + "</li>" +
**"<button class=btnAddToCart onclick=addToCart()>Add to Cart</button>**<br><br>" +
"</ul>";
list += "<li>" + l + "</li><br><br>";
}
list += "</ol>";
document.getElementById("idDisplayStore").innerHTML = list;
}
}
catch(erMs)
{
document.getElementById("idDisplayStore").innerHTML = erMs;
}
};
xhttp.open("GET", groceryStoreUrl, true);
xhttp.setRequestHeader('Content-Type', 'application/json');
xhttp.send();
}
我在 javaScript 中有另一个功能,用于将商品添加到购物车,我需要实现它,但卡在了那里。
function addToCart()
{
/* Need to implement this. So that I can send that particular selected Item to backend to add to cart.*/
}
问题:
1.On 点击按钮,只有那个项目应该被发送到购物车。我不知道如何只访问该元素,因为在我的设计中我无法知道单击了哪个按钮。
2.If谁有更好的设计或者link给post解释一下,请提一下。
PS:这不是一个从javascript中的无序列表访问数据的简单问题。我想知道在前端开发中针对此类问题遵循的最佳设计。
通常,您的 JSON.parse(this.responseText)
然后将其作为 data-product-id
应用到您的“添加到购物车”按钮中。
从那里删除内联 onClick 函数,这不是好的做法。
然后在您的全局 javascript 文件中添加 eventListerner 以点击添加到购物车按钮,您将在其中获得当前 data-product-id
。在你得到这个之后 - 你会知道究竟是哪个产品被点击添加到购物车。
然后根据您的后端逻辑,您可能需要使用此 ID 向服务器发送 ajax 请求,以便让服务器知道该产品已添加到购物车。
如果您有其他问题,请告诉我。