javascript购物车计算器

时间:2013-12-07 00:51:10

标签: javascript

大家好我正在尝试使用javascript为学校项目制作购物车计算器。只需根据输入的每个项目的数量添加小计即可。我花了几个小时试图解决这个问题,但我做不到。我的方法有什么问题,我该如何解决?请帮助我,并提前感谢。

这是我的代码:

function calc()
{
var priceBooks = parseFloat(document.getElementById("priceBook").innerHTML);    
var pricePens = parseFloat(document.getElementById("pricePens").innerHTML);
var pricePencils = parseFloat(document.getElementById("pricePencils").innerHTML);
var priceHighlighter = parseFloat(document.getElementById("priceHighlighter").innerHTML);
var priceBatteries = parseFloat(document.getElementById("priceBatteries").innerHTML);

var book = parseInt(document.getElementById("book").value);
var pen = parseInt(document.getElementById("pen").value);
var pencil = parseInt(document.getElementById("pencil").value);
var highlighter = parseInt(document.getElementById("highlighter").value);
var batteries = parseInt(document.getElementById("batteries").value);

var subTotal = document.getElementById("subT");

if(book < 0 || pen < 0 || pencil < 0 || highlighter < 0 || batteries < 0)
{
    subTotal.innerHTML="Invalid quantity. Please do not use negative numbers."; 
}
else
{
    var bookTotal = priceBooks*book;
    var penTotal = pricePens*pen;
    var pencilTotal = pricePencils*pencil;
    var highlighterTotal = priceHighlighter*highlighter;
    var batteryTotal = priceBatteries*batteries;
    var subT = bookTotal+penTotal+pencilTotal+highlighterTotal+batteryTotal;
    subTotal.innerHTML = subT;
}
}

以下是完整网站: http://www.albany.edu/~rf124561/Final/Final.html


编辑:感谢您提出的所有建议。它似乎现在想要工作,但每次我点击按钮来计算它刷新页面。除此之外谢谢大家:)

3 个答案:

答案 0 :(得分:1)

你的钢笔荧光笔在JS中有错误的ID subT定义在哪里?你用它来保存一个值,然后它也是一个神奇的元素。我认为您需要取消注释该小计行,并将其用于您的innerHTML语句。如果没有解决问题,请在修好后再报告。

编辑:哦,你在浮动值上使用parseInt。当事情变得有效时,这也会让你感到困惑。使用parseFloat。

答案 1 :(得分:0)

取消注释

var subTotal = document.getElementById("subT");

更改这些行:

subT.innerHTML="Invalid quantity. Please do not use negative numbers."; 
subT.innerHTML = subT;

进入

subTotal.innerHTML="Invalid quantity. Please do not use negative numbers."; 
subTotal.innerHTML = subT;

并且,David说,在浮点数的情况下使用parseFloat:)

答案 2 :(得分:0)

我可能错了..

pricePenHighlighter似乎不是一个id,意思是这一行:

var priceHighlighter = parseInt(document.getElementById("pricePenHighlighter").innerHTML);

会产生一些......很可能NaN?并且该函数将返回或至少会破坏您的结果。

我相信我看到了priceHighlighter这可能是你的意思吗?