删除Javascript中的项目

删除Javascript中的项目,javascript,html,arrays,javascript-objects,dom-events,Javascript,Html,Arrays,Javascript Objects,Dom Events,第一个问题是我需要删除函数的帮助。我已经试过了拼接法,但还是没有成功。单击“删除项目”按钮时,必须删除该行。 第二个问题已经在输入表单中放置了必需的属性,但是当字段为空时,它仍然提交表单 var qtyTotal=0; var-priceTotal=0; var乘积=[]; 函数addProduct(){ var productID=document.getElementById(“productID”).value; var product_desc=document.getElementB

第一个问题是我需要删除函数的帮助。我已经试过了拼接法,但还是没有成功。单击“删除项目”按钮时,必须删除该行。 第二个问题已经在输入表单中放置了必需的属性,但是当字段为空时,它仍然提交表单

var qtyTotal=0;
var-priceTotal=0;
var乘积=[];
函数addProduct(){
var productID=document.getElementById(“productID”).value;
var product_desc=document.getElementById(“product_desc”).value;
变量数量=document.getElementById(“数量”).value;
//qtyTotal=qtyTotal+parseInt(数量);
//document.getElementById(“qtyTotals”).innerHTML=qtyTotal;
var price=document.getElementById(“价格”).value;
var新产品={
产品标识:空,
产品描述:空,
产品数量:0,
产品价格:0.00,
};
newProduct.product_id=productID;
newProduct.product_desc=产品描述;
newProduct.product\u数量=数量;
newProduct.product\u price=价格;
产品。推送(新产品);
//log(“新产品”+JSON.stringify(新产品))
//log(“产品”+JSON.stringify(产品))
var html=“”;
html+=“产品ID”;
html+=“产品说明”;
html+=“数量”;
html+=“价格”;
html+=“动作”;
对于(变量i=0;i

购物车纯Javascript
产品标识:
产品说明:
数量:
价格:


问题在于您正在修改
产品的数组
,而没有实际更改页面上显示的HTML

如果添加代码来删除指定的
元素,我相信问题会得到解决

例如: 您可以在创建每个表时将对应于
product\u id
的id附加到每个表,然后删除具有该id的表

var remove = document.getElementById(product_id);
remove.parentElement.removeChild(remove);

问题是您正在修改
产品的数组
,而没有实际更改页面上显示的HTML

如果添加代码来删除指定的
元素,我相信问题会得到解决

例如: 您可以在创建每个表时将对应于
product\u id
的id附加到每个表,然后删除具有该id的表

var remove = document.getElementById(product_id);
remove.parentElement.removeChild(remove);

您的单击处理程序正在调用deleteProduct(),它将调用您的函数,而不将product\u id值作为参数传递,因此您的
if(products[i].product\u id==product\u id)
将永远不会计算为true

试试这个:

 html+="<td><button type='submit' onClick='deleteProduct(\""+products[i].product_id +"\");'/>Delete Item</button> &nbsp; <button type='submit' onClick='addCart();'/>Add to Cart</button></td>";
html+=“删除项目添加到购物车”;

至于必填字段,请确保在所有输入上都设置了type属性,并将

移动到表单内部。

您的单击处理程序正在调用deleteProduct(),该处理程序将调用您的函数,而不会将product_id值作为参数传递,因此您的
if(products[i].product_id==product_id)
的计算结果永远不会为真

试试这个:

 html+="<td><button type='submit' onClick='deleteProduct(\""+products[i].product_id +"\");'/>Delete Item</button> &nbsp; <button type='submit' onClick='addCart();'/>Add to Cart</button></td>";
html+=“删除项目添加到购物车”;

至于必填字段,请确保在所有输入上都设置了type属性,并将

移动到表单中。

您的主要问题是没有将产品id传递给delete函数,并且您希望它在表单中

此外,还可以删除HTML元素本身

我已经完成了这个片段。我已经添加了产品id作为表的row元素的id,所以在delete函数中,您可以删除它以查找该id

此外,如果要删除的项是表中的最后一项,则表也将被删除(我已向表中添加了一个id,以便您可以轻松删除它)

var qtyTotal=0;
var-priceTotal=0;
var乘积=[];
函数addProduct(){
var productID=document.getElementById(“productID”).value;
var product_desc=document.getElementById(“product_desc”).value;
变量数量=document.getElementById(“数量”).value;
//qtyTotal=qtyTotal+parseInt(数量);
//document.getElementById(“qtyTotals”).innerHTML=qtyTotal;
var price=document.getElementById(“价格”).value;
var新产品={
产品标识:空,
产品描述:空,
产品数量:0,
产品价格:0.00,
};
newProduct.product_id=productID;
newProduct.product_desc=产品描述;
newProduct.product\u数量=数量;
newProduct.product\u price=价格;
产品。推送(新产品);
//log(“新产品”+JSON.stringify(新产品))
//log(“产品”+JSON.stringify(产品))
var html=“”;
html+=“产品ID”;
html+=“产品说明”;
html+=“数量”;
html+=“价格”;
html+=“活动”