Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不知道是什么';我的密码有问题吗_Javascript - Fatal编程技术网

Javascript 不知道是什么';我的密码有问题吗

Javascript 不知道是什么';我的密码有问题吗,javascript,Javascript,我正在写一个程序,需要两个数字,一个小计和税率,并打印销售税和总计。然而,我在写它的时候遇到了很多问题,所以我试着倒转过来,把它简化成简单的两个数字相加。然而,它不是添加数字,而是简单地并排打印两个数字。谁能告诉我我的代码有什么问题吗 HTML: JS: 编辑:我的错误,在检查值之前忘记添加parseFloat。当我回到我的原始代码时,同样的问题仍然存在: var subtotal = document.getElementById("subtotal"); var taxRate = doc

我正在写一个程序,需要两个数字,一个小计和税率,并打印销售税和总计。然而,我在写它的时候遇到了很多问题,所以我试着倒转过来,把它简化成简单的两个数字相加。然而,它不是添加数字,而是简单地并排打印两个数字。谁能告诉我我的代码有什么问题吗

HTML:

JS:

编辑:我的错误,在检查值之前忘记添加parseFloat。当我回到我的原始代码时,同样的问题仍然存在:

var subtotal = document.getElementById("subtotal");
var taxRate = document.getElementById("tax-rate");
var salesTax = document.getElementById("sales-tax");
var total = document.getElementById("total");

subtotal.addEventListener("input", calc);
taxRate.addEventListener("input", calc);

function calc()
{
    var sub = parseFloat(subtotal.value) || 0;
    var tax = parseFloat(taxRate.value) || 0;
    salesTax.innerHTML = sub * (tax /100);
    total = sub + salesTax.innerHTML;
}

例如,您需要使用

这种方法的优点是,如果提供了一个不可转换的字符串,则取一个值作为值,再加上,则得到的默认值为零

var sub = +subtotal.value || 0;
var tax = +taxRate.value || 0;

您遇到了这样一个事实,即
s是字符串,您可以使用
+
连接字符串以及累加数字

首先将数字字符串解析为实际数字:

function calc()
{
    var sub = parseFloat(subtotal.value || 0);
    var tax = parseFloat(taxRate.value || 0);
    total.innerHTML = sub + tax;
}

JavaScript将这些值视为两个字符串,从而将它们组合在一起

这样做:

var subtotal=document.getElementById(“subtotal”);
var taxRate=document.getElementById(“税率”);
var total=document.getElementById(“总计”);
小计。添加的监听器(“输入”,计算);
taxRate.addEventListener(“输入”,计算);
函数计算(){
var sub=数量(小计值)| | 0;
var tax=数字(taxRate.value)| 0;
total.innerHTML=子项+税;
}
小计:

税率:


更改添加到下面的逻辑,因为之前它将其视为JavaScript字符串,而不是求和,而是将其连接起来。将其显式转换为整数/双精度将防止出现这种情况。“||”处理文本字段中的非数字数据

var subtotal=document.getElementById(“subtotal”);
var taxRate=document.getElementById(“税率”);
var salesTax=document.getElementById(“销售税”);
var total=document.getElementById(“总计”);
小计。添加的监听器(“输入”,计算);
taxRate.addEventListener(“输入”,计算);
函数计算()
{
var sub=parseFloat(小计值)| 0;
var tax=parseFloat(taxRate.value)| 0;
salesTax.innerHTML=sub*(税/100);
total.innerHTML=sub+parseFloat(salesTax.innerHTML | | 0);
}

标题
小计:

税率:

总计:

销售税:


您需要将字符串值强制转换为整数类型。为此,您可以使用parseInt函数:

total.innerHTML = parseInt(sub) + parseInt(tax);

你的HTML和JS代码片段是一样的。标题应该给出问题的简短摘要,而不仅仅是一句没有意义的句子,这对其他人搜索问题没有帮助。他为什么需要使用“一元加号”?@Andreas这只是让解释器将值视为数字(而不是字符串)的多种方法之一好吧,是的,我很笨,我忘了加parseFloat lol。现在回到主要问题:我仍然无法将销售税和小计相加。我现在在我的JS文件中有了它:salesTax.innerHTML=sub*(tax/100);总计=sub+salesTax.innerHTML;但这不起作用,它仍然只是并排打印数字。税率是唯一计算正确的东西。您能在原始问题中添加此编辑吗?我搞不懂密码!谢谢完成后,已添加编辑。@AustinKing我编辑了我的答案。太棒了,它工作了!非常感谢你!这件事我已经坚持了好几天了,现在我终于可以继续了。
function calc()
{
    var sub = parseFloat(subtotal.value || 0);
    var tax = parseFloat(taxRate.value || 0);
    total.innerHTML = sub + tax;
}
total.innerHTML = parseInt(sub) + parseInt(tax);