我有一个我用于购物篮的代码,我似乎无法解决如何添加到成本变量。
var basket = {};
basket.items = [];
basket.costCalculate = function() {
var cost = 0,
html = "Total: " + cost;
for(var i = 0; i < this.items.length; i++) {
cost = (cost + parseInt(this.items[i].price));
};
return html;
};
basket.print = function() {
var basketCon = document.getElementById("basket"),
html = "";
basketCon.innerHTML = "<h1>Basket - " + this.costCalculate() + "</h1>";
for(var i = 0; i < this.items.length; i++) {
html += '<div class="item">';
for(prop in this.items[i]) {
if(prop != "id") {
html += '<p><span class="title">' + prop + '</span>: ' + this.items[i][prop] + '</p>';
}
};
html += '</div>';
};
basketCon.innerHTML += html;
};
function init() {
shop.print()
basket.handler();
};
window.onload = init;
我一直试图遍历items数组的长度并总结成本字段。但似乎没有用。有什么非常基本的我做错了吗?
答案 0 :(得分:0)
您正在使用identity运算符。您没有分配值
cost === (cost + parseInt(this.items[i].price));
应该是:
cost += parseInt(this.items[i].price);
其余的:
var basket = {};
basket.items = [{price:10}, {price:"10"} /*,{price:"nan"}*/];
basket.costCalculate = function () {
var cost = 0;
for (var i = 0; i < this.items.length; i++) {
// Breaks for NaN values
cost = (cost + parseInt(this.items[i].price));
}
return cost;
};
basket.print = function () {
var basketCon = document.getElementById("basket"),
html = "";
basketCon.innerHTML = "<h1>Basket - Cost: " + this.costCalculate() + "</h1>";
for (var i = 0; i < this.items.length; i++) {
html += '<div class="item">';
for (var prop in this.items[i]) {
if (prop != "id") {
html += '<p><span class="title">' + prop + '</span>: ' + this.items[i][prop] + '</p>';
}
}
html += '</div>';
}
basketCon.innerHTML += html;
};
function init() {
//shop.print();
basket.print();
}
window.onload = init;
<强> Fiddle 强>