【发布时间】:2019-05-14 09:51:43
【问题描述】:
我有一个网页,如果您单击产品名称,它会打开产品描述以及显示“添加到购物车”的表单。这不起作用。
我的所有产品上都会显示相同的表单,因此无论我选择哪种产品,它都不会指定我要添加到购物车的产品,因为它已附加到所有产品中。
我希望它能够工作,以便我可以单击产品名称,描述和表单会在同一页面上弹出(这部分正在工作)但是当我将数量更改为数字时,然后单击“添加到购物车” ' 在表单上,它有自己的唯一标识符,我实际上可以将其作为自己的产品输入到购物车中。
这是我到目前为止所拥有的,我还没有为我的实际购物车创建代码,但我知道我做错了什么,就我所看到的而言,无论我使用的是什么形式任何产品,无论哪种产品,输出都是相同的。
function drawPage() {
$.get('/products', function(data) {
console.log(data);
var prod = data.products;
for (var i = 0; i < prod.length; i++) {
var el = document.createElement('P');
el.innerHTML = prod[i].name;
el.addEventListener('click', function(event) {
console.log(event.target.textContent);
for (var i = 0; i < prod.length; i++) {
if (prod[i].name == event.target.textContent) {
$('#pro').html('');
$('#pro').html(prod[i].name +
prod[i].description + '<img src=' + prod[i].image_url + '>' + "Price: " +
prod[i].unit_cost);
$("#pro").append(
$("<form/>", {
action: '#',
method: '#'
}).append($("<input/>", {
type: 'number',
id: 'pro',
name: 'productname',
placeholder: 'Quantity'
}), $("<br/>"), $("<input/>", {
type: 'submit',
id: 'submit',
value: 'Add to Cart'
}))
)
}
}
})
$('#app').append(el);
}
})
}
document.addEventListener('load', drawPage());
<div id="cart-container">
<h1>My Cart</h1>
<table id="myCart" border="1">
<tr>
<th>Item name</th>
<th>Qty</th>
<th>Price</th>
<th>Total</th>
</tr>
<tr style="display: none; border-top: 2px solid black">
<td colspan="3">Subtotal</td>
<td class="right subtotal"></td>
</tr>
</table>
</div>
【问题讨论】:
-
除了问题中的问题,您的最后一行代码必须是
document.addEventListener('load', drawPage);,因为您需要将drawPage的reference 传递给处理程序,而不是函数调用的结果。
标签: javascript jquery html forms