【问题标题】:How to parse a price with parseInt() correctly in JS如何在 JS 中正确使用 parseInt() 解析价格
【发布时间】:2014-10-12 02:16:25
【问题描述】:

我正在尝试从 html 文档中解析价格,但遇到了一些问题:

上面有很多 div,因此我不能像往常一样使用 parseInt()。下面是类元素的样子:

<div>
<span id="market_buynow_dialog_totals_total"  class="market_dialog_totals_cost">0,11€</span>
<span class="market_dialog_totals_label">Total:</span>
</div>

此外,还有一个,,我不想被限制在, 的左侧或右侧,在上面的示例中,我希望得到 int 11,即 399,99我很想得到 39999。

谁能帮助我并告诉我如何实现这一目标?我一个人做这个还不够好,我已经尝试了很长时间。泰!

【问题讨论】:

  • 不清楚, 是用于十进制分隔符还是数字分组。请澄清。

标签: javascript parsing parseint


【解决方案1】:

要从“market_buynow_dialog_totals_total”元素中检索整数,您可以使用以下代码。

function retrieveValue(id){
    return parseFloat(document.getElementById(id).innerHTML.replace(/[,€]/g, ""));
}

【讨论】:

  • 这不会将10,50€ 解析为1050吗?
【解决方案2】:

您可能希望使用parseFloat,将逗号替换为句点,并将数字视为单个十进制值。

下面的 sn-p 使用该方法(第一个结果),还使用 ​​parseInt 单独解析逗号前后的数字组(第二个和第三个结果),并按照您上面的建议(第四个结果) )。

var src = document.getElementById("market_buynow_dialog_totals_total");
var segments = src.innerText.split(",");
document.getElementById("result1").innerText = parseFloat(src.innerText.replace(/,/, "."));
document.getElementById("result2").innerText = parseInt(segments[0]);
document.getElementById("result3").innerText = parseInt(segments[1]);
document.getElementById("result4").innerText = parseInt(src.innerText.replace(/,/, ""));
<div>
<span id="market_buynow_dialog_totals_total"  class="market_dialog_totals_cost">399,99€</span>
<span class="market_dialog_totals_label">Total:</span>
</div>
Parsed result as a decimal: <span id="result1"></span><br/>
Parsed result as an integer, left side: <span id="result2"></span><br/>
Parsed result as an integer, right side: <span id="result3"></span><br/>
Parsed result as an integer, both sides: <span id="result4"></span><br/>

【讨论】:

    猜你喜欢
    • 2019-09-05
    • 2018-11-08
    • 2022-06-11
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 2011-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多