parseInt 或 parseFloat 或字符串强制转换或 Number() 将字符串转换为数字
parseInt nor parseFloat nor string coercion nor Number() converting string to number
我的 dom 中有一组相同的 class 字符串。我需要将字符串转换为数字,然后对它们执行计算并将它们 return 显示到屏幕上。我使用过 parseInt、parseFloat、Number(),甚至使用 +variable 进行强制转换;没有任何交谈。在每种情况下,我都将 typeof 显示为“string”。我不确定我做错了什么。有人可以帮我找到我缺少的东西吗?这是我的 html:
<div class="price">
<span class="label">from</span>
<span class="value">
<span class="text-lg lh1em item "> ,845.00</span>
</span>
<span class="value">
<span class="text-lg lh1em item "> ,645.00</span>
</span>
</div>
我的Javascript如下:
let customPrice = document.getElementsByClassName('lh1em');
Array.from(customPrice).forEach(function(dollarAmount) {
let withoutDollar = dollarAmount.innerText.substr(1);
let withoutComa = withoutDollar.replace(",",'');
// parseFloat(withoutComa);
let noPointZero = withoutComa.replace(/\.00/, '');
// noPointZero * 1;
// parseInt(noPointZero);
Number(noPointZero);
console.log(typeof noPointZero);
});
没有 typeof,我得到正确的数字值作为字符串。
我怎样才能强制这是一个数字?谢谢。
有一个 space 你的 substr()
正在摆脱。改为 .replace(/[^0-9.]/g, '')
。
数字和字符串是不可变的。
将转换分配给稍后使用的变量。
let customPrice = document.getElementsByClassName('lh1em');
Array.from(customPrice).forEach(function(dollarAmount) {
let withoutDollar = dollarAmount.innerText.substr(1);
let withoutComa = withoutDollar.replace(",",'');
let noPointZero = withoutComa.replace(/\.00/, '');
noPointZero = Number(noPointZero);
console.log(typeof noPointZero, noPointZero);
});
<div class="price">
<span class="label">from</span>
<span class="value">
<span class="text-lg lh1em item "> ,845.00</span>
</span>
<span class="value">
<span class="text-lg lh1em item "> ,645.00</span>
</span>
</div>
您在正文开头有一个 space。所以 substr(1)
正在删除 space,而不是 $
。使用trim()
去除周围的白色space.
最后还需要赋值Number()
的结果。它就像所有其他修正一样 -- 它 returns 一个新值,它不会修改现有的值。
要替换逗号,您需要使用带有 g
修饰符的正则表达式。替换字符串只会替换第一次出现的地方。
Array.from(customPrice).forEach(function(dollarAmount) {
let withoutDollar = dollarAmount.innerText.trim().replace(/^$/, '');
let withoutComa = withoutDollar.replace(/,/g,'');
// parseFloat(withoutComa);
let noPointZero = withoutComa.replace(/\.00$/, '');
// noPointZero * 1;
// parseInt(noPointZero);
let numeric = Number(noPointZero);
console.log(typeof numeric);
});
我的 dom 中有一组相同的 class 字符串。我需要将字符串转换为数字,然后对它们执行计算并将它们 return 显示到屏幕上。我使用过 parseInt、parseFloat、Number(),甚至使用 +variable 进行强制转换;没有任何交谈。在每种情况下,我都将 typeof 显示为“string”。我不确定我做错了什么。有人可以帮我找到我缺少的东西吗?这是我的 html:
<div class="price">
<span class="label">from</span>
<span class="value">
<span class="text-lg lh1em item "> ,845.00</span>
</span>
<span class="value">
<span class="text-lg lh1em item "> ,645.00</span>
</span>
</div>
我的Javascript如下:
let customPrice = document.getElementsByClassName('lh1em');
Array.from(customPrice).forEach(function(dollarAmount) {
let withoutDollar = dollarAmount.innerText.substr(1);
let withoutComa = withoutDollar.replace(",",'');
// parseFloat(withoutComa);
let noPointZero = withoutComa.replace(/\.00/, '');
// noPointZero * 1;
// parseInt(noPointZero);
Number(noPointZero);
console.log(typeof noPointZero);
});
没有 typeof,我得到正确的数字值作为字符串。 我怎样才能强制这是一个数字?谢谢。
有一个 space 你的 substr()
正在摆脱。改为 .replace(/[^0-9.]/g, '')
。
数字和字符串是不可变的。 将转换分配给稍后使用的变量。
let customPrice = document.getElementsByClassName('lh1em');
Array.from(customPrice).forEach(function(dollarAmount) {
let withoutDollar = dollarAmount.innerText.substr(1);
let withoutComa = withoutDollar.replace(",",'');
let noPointZero = withoutComa.replace(/\.00/, '');
noPointZero = Number(noPointZero);
console.log(typeof noPointZero, noPointZero);
});
<div class="price">
<span class="label">from</span>
<span class="value">
<span class="text-lg lh1em item "> ,845.00</span>
</span>
<span class="value">
<span class="text-lg lh1em item "> ,645.00</span>
</span>
</div>
您在正文开头有一个 space。所以 substr(1)
正在删除 space,而不是 $
。使用trim()
去除周围的白色space.
最后还需要赋值Number()
的结果。它就像所有其他修正一样 -- 它 returns 一个新值,它不会修改现有的值。
要替换逗号,您需要使用带有 g
修饰符的正则表达式。替换字符串只会替换第一次出现的地方。
Array.from(customPrice).forEach(function(dollarAmount) {
let withoutDollar = dollarAmount.innerText.trim().replace(/^$/, '');
let withoutComa = withoutDollar.replace(/,/g,'');
// parseFloat(withoutComa);
let noPointZero = withoutComa.replace(/\.00$/, '');
// noPointZero * 1;
// parseInt(noPointZero);
let numeric = Number(noPointZero);
console.log(typeof numeric);
});