以数字格式获取字符串价格

时间:2019-04-09 21:14:20

标签: javascript opencart-3

我正在使用opencart 3.x并试图将价格换算成数字,以便可以进行计算。我不断收到NaN或脚本错误:

<h2><span id="getPrice">{{ price }}</span> /Carton</h2>    

在这里,我将id设置为getPrice,因此一旦页面加载,我就可以获取价格,价格为169.99美元。这个数字不能用作数字。这是我遇到的问题。我知道{{price}}是PHp,但是我认为既然数字在脚本之前加载,我不必担心吗?页面加载完成后,它说的是每箱$ 116.99,我将{{price}}摊开,这样我就可以将其转换成数字。

这是我的JavaScript。我尝试了不起作用的parsefloat,并且alawys的toFixed(2)收到“ toFixed不是函数”错误

const getPrice = document.querySelector("[id^='getPrice']").innerHTML;
const getSquareFeetPerBox = document.querySelector("[id^='input-option']").value;
const costPerSqft = getPrice / getSquareFeetPerBox;
const fixxed = parseFloat(getPrice);
document.getElementById("pricePerSqft").innerHTML = ` ( ${costPerSqft}  /per sqft )`;
console.log(fixxed);    

请帮助,我已经在这里待了几个小时,只需要对价格进行简单的计算即可。我使用console.log只是为了查看是否记录了一个数字,但始终是$ 116.99或脚本错误...从来没有只是116.99

我先谢谢你

1 个答案:

答案 0 :(得分:1)

假设使用以下HTML:

<h2><span id="getPrice">$169.99</span> /Carton</h2>  
<input type="text" id='input-option' value="10"></input>
<p id="pricePerSqft"> </p>

使用以下JS:

const getPrice = document.querySelector("[id^='getPrice']").innerHTML;
const getSquareFeetPerBox = document.querySelector("[id^='input-option']").value;
const fixed = parseFloat(getPrice.slice(1, getPrice.length));
const costPerSqft = fixed / getSquareFeetPerBox;
console.log(costPerSqft)
document.getElementById("pricePerSqft").innerHTML = ` ( ${costPerSqft}  / per sqft );

您应该能够解析该数字。我使用String#slice来获取数字,但是根据您对原始帖子的评论,肯定有其他方法可以获取数字。使用像Mark这样的正则表达式建议听起来像是一个可靠的选择:)

如果需要,可在此处链接CodePen:https://codepen.io/travishaby/pen/jRbqMr