我可以在Math.round计算中使用从DOM收集的变量吗?

时间:2019-06-10 12:34:08

标签: javascript dom

我从 DOM 中得到一些数字,一个原始价格和一个折扣价格。现在我想写出两者之间的百分比差异。这些数字总是可以变化的。所以我的问题:

我可以计算变量吗? 例如:

((originalPrice - discountPrice) / originalPrice) * 100;,然后使用Math.round除去小数点? 当我尝试时,我只会得到NaN

这是我尝试过的:

      var originalPrice = document.querySelector('.original-price')
      var discountPrice = document.querySelector('.from-price')

Math.round((originalPrice - discountPrice) / originalPrice) * 100;

我只得到NaN。我希望%

有所不同

2 个答案:

答案 0 :(得分:0)

如果您查看MDN,则会发现您在每种情况下都返回了对HTMLelement的引用,这与它的值不同。

您的示例尚不清楚HTML元素是什么,但是您需要获取其TEXT或VALUE

答案 1 :(得分:0)

您存储在变量中的东西不是不是值,它们本身就是<div>HTMLDivElement对象的实例)。而且由于无法将这些对象解析为数字,因此尝试计算它们会导致NaN

要获取这些值并进行计算,您需要:

  1. 从这些div
  2. 中获取文本内容
  3. 将其解析为Number类型(默认情况下,所有文本内容均为String类型。)

因此您的变量可能如下所示(如Prasanth Ganesan所述):

var originalPrice = parseInt(document.querySelector('.original-price').innerText);
// or
var discountPrice = Number(document.querySelector('.from-price').innerText)

如果

保证了这些div的内容为为数字(而非文本),则可以将正确的Number值存储到变量中,并且可以进行计算。