【问题标题】:How do I find the sum of numbers from multiple form input values in JavaScript?如何从 JavaScript 中的多个表单输入值中找到数字的总和?
【发布时间】:2015-07-12 15:41:20
【问题描述】:

我有 5 个输入,其中包含价格。第六个输入将通过将前五个输入的价格相加来显示总价格。

function calculateTotal(){

    var priceInputs = document.querySelectorAll("input[name^='tPriceInput']");
    var totalPrice = 0;

    for(var i = 0; i < priceInputs.length; i++){

        totalPrice = totalPrice + parseInt(priceInputs[i].value);

    }

    return totalPrice;

}

上面的函数总是返回 NaN... 为什么这不起作用?我也尝试过不使用 parseInt 方法,但这只会将字符串添加在一起。

【问题讨论】:

  • 你能在 jdfiddle 中分享你的 html
  • w3schools.com/jsref/jsref_parseint.aspParseInt,如果不能返回数字,则返回NaN。这意味着 priceInputs[i].value 不是数字,所以您的问题很可能在于document.querySelectorAll("input[name^='tPriceInput']"),您认为可能是因为您输入了^= 而不是= 吗?
  • 你的代码对我来说很好:jsfiddle.net/9sjbx0s4 - - 你的问题必须在你的代码中的其他地方,或者你只向我们展示了整个代码的 sn-p。
  • 我会推测您希望显示值的第 6 个字段也具有名称 tPriceInput,这导致它的空白值被添加到您的totalValue,导致 NaN。
  • 专业提示,你可以说totalPrice += parseInt(priceInputs[i].value);

标签: javascript


【解决方案1】:

没有足够的信息,但我假设你所说的你在价格中使用逗号 , 作为分隔符而不是点 .,但 JavaScript 需要点。这是非英语区域设置的常见问题。

如果是这样,试试这个:

totalPrice = totalPrice + parseInt(priceInputs[i].value.replace(",", "."));

【讨论】:

    【解决方案2】:

    改变

    var priceInputs = document.querySelectorAll("input[name^='tPriceInput']");
    

    var priceInputs = document.querySelectorAll("input[name='tPriceInput']");
    

    【讨论】:

    • 有什么区别?
    • 这就是你不劫持 cmets 的原因,如果我知道这是我不会把它放在 cmets 中的答案,我会把它放在答案部分.因为我在猜测,所以在 cmets 中,哈哈。
    • 这无济于事。
    • 如果您查看 Albert 的时间戳,您会看到您的评论是在我发帖 4 分钟后发表的。呵呵!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-22
    • 1970-01-01
    • 1970-01-01
    • 2019-11-10
    • 2014-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多