我正在使用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
我先谢谢你
答案 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