因此,我试图计算用户添加到购物车中的商品数量,并打印所有选定商品的总费用。计算项目的数量是可以正常工作的,但是我正在努力找出如何获取与用户选择选择的每个项目相关的特定成本,并将所有这些项目的总和加在一起,代表变量totalCost。
例如,如果用户单击iMac旁边的“添加”以及Windows PC旁边的“添加”,则总费用应为2000 + 1300 =3300。在calculate()函数中,我尝试进行迭代浏览电子部门下的所有项目,并检查用户是否单击了某个项目旁边的按钮,但是这弄乱了我的程序,这就是为什么我将功能注释掉了。与count变量类似,我试图成功获取每次用户选择向购物车中添加商品时进行更新的总费用。任何指导将不胜感激。
let count = 0;
let totalCost = 0;
function init() {
count = 0;
let button = document.getElementById("but");
button.onclick = buttonClicked;
}
function buttonClicked() {
count++;
let div = document.getElementById("coutner");
div.innerHTML = "You have " + count + " items and a total cost of $" + totalCost;
}
function showOptions(el) {
let userPicked = el.value;
var div = document.getElementById("div");
if (userPicked != 'none') {
var newContent = (electronics.store);
newContent += '<div>';
Object.keys(electronics.inventory).forEach(key => {
newContent += key;
newContent += '<div>';
var items = Object.values(electronics.inventory[key]);
items.forEach(item => {
newContent += '<div>';
newContent += ` <span class="brand"> ${item.brand} </span> <span class="price">$${item.cost}</span>`;
newContent += `<input type=button value="Add" onclick="add(this)"/>`
newContent += '</div>';
});
newContent += '</div>';
});
newContent += '</div>';
div.innerHTML = newContent;
}
}
function add(add) {
console.clear();
console.log(add.closest('div').textContent.trim());
buttonClicked();
}
let electronics = {
store: "Mike's Computers",
inventory: {
"Laptops": {
0: {
brand: "iMac",
cost: 2000
},
1: {
brand: "Dell",
cost: 600
}
},
"Computers": {
2: {
brand: "Windows PC",
cost: 1300
}
}
}
};
<div>
<h1>Welcome</h1>
</div><br />
<div class="dropdown">
<form>
<select name="list" id="list" accesskey="target" onchange="showOptions(this); buttonClicked(this)">
<option value="none">Select a restaurant</option>
<option value="Electronics">Electronics</option>
</select>
<input type=button id="but" value="Select" onclick="showOptions(); buttonClicked()" />
<div><mark id="coutner"></mark></div>
</form>
</div>
<div id="div"></div>
[尝试显示我的评论时,我一直收到格式错误,所以这里是分开的(它在init()下面的js文件中]
/*
function calculate(){
if(userPicked == 'Electronics'){
Object.keys(electronics.menu).forEach(key => {
var items = Object.values(electronics.menu[key]);
items.forEach(item => {
if(buttonClicked(){
totalCost += item.cost;
}
});
});
}
}
*/
这里我已固定代码
var count = 0;
var totalCost = 0;
function init() {
count = 0;
let button = document.getElementById("but");
button.onclick = buttonClicked;
}
function buttonClicked() {
count++;
let div = document.getElementById("coutner");
div.innerHTML = "You have " + count + " items and a total cost of $" + totalCost;
}
function showOptions(el) {
let userPicked = el.value;
var div = document.getElementById("div");
if (userPicked != 'none') {
var newContent = (electronics.store);
newContent += '<div>';
Object.keys(electronics.inventory).forEach(key => {
newContent += key;
newContent += '<div>';
var items = Object.values(electronics.inventory[key]);
items.forEach(item => {
newContent += '<div>';
newContent += ` <span class="brand"> ${item.brand} </span> <span class="price">$${item.cost}</span>`;
newContent += `<input type=button value="Add" onclick="add(this,${item.cost})"/>`
newContent += '</div>';
});
newContent += '</div>';
});
newContent += '</div>';
div.innerHTML = newContent;
}
}
function add(add,brand) {
console.clear();
totalCost += parseInt(brand)
console.log(add.closest('div').textContent.trim());
buttonClicked();
}
let electronics = {
store: "Mike's Computers",
inventory: {
"Laptops": {
0: {
brand: "iMac",
cost: 2000
},
1: {
brand: "Dell",
cost: 600
}
},
"Computers": {
2: {
brand: "Windows PC",
cost: 1300
}
}
}
};
<div>
<h1>Welcome</h1>
</div><br />
<div class="dropdown">
<form>
<select name="list" id="list" accesskey="target" onchange="showOptions(this); buttonClicked(this)">
<option value="none">Select a restaurant</option>
<option value="Electronics">Electronics</option>
</select>
<input type=button id="but" value="Select" onclick="showOptions(); buttonClicked()" />
<div><mark id="coutner"></mark></div>
</form>
</div>
<div id="div"></div>