大家好我正在尝试使用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
编辑:感谢您提出的所有建议。它似乎现在想要工作,但每次我点击按钮来计算它刷新页面。除此之外谢谢大家:)
答案 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
这可能是你的意思吗?