使用下面的代码,我试图通过javascript中的类名称获取元素,并将它们存储在数组中。
这是我得到的输出:“我得到此输出的初始价格数组$ 30.00,$ 20.00,$ 40.00”
我的问题是如何从数组中删除$符号并仅存储数字?像这样 初始价格= [20、30、40]?
var initialprices = document.getElementsByClassName("price");
var initialprice = [];
flag = false;
//for every element in initialprices array get their value from innerhtml
for (var i = 0; i < initialprices.length; i++) {
initialprice.push(initialprices[i].innerHTML);
console.log("the initial prices array " + initialprice);
}
<p class ="price">$ 30.00</p>
<p class ="price">$ 20.00</p>
<p class ="price">$ 40.00</p>
答案 0 :(得分:3)
使用replace
,然后将其转换为带有一进制加号的数字。
Array.from
函数可以将DOM元素映射到这些数字:
var initialprices = Array.from(document.querySelectorAll(".price"),
price => +price.textContent.replace("$", ""));
console.log(initialprices);
<p class ="price">$ 30.00</p>
<p class ="price">$ 20.00</p>
<p class ="price">$ 40.00</p>
答案 1 :(得分:1)
将不需要的字符剥离并解析为数字,然后添加到数组中
import withRouter from 'next/router';
const Admin = (page) => (
<AdminLayout>
<style global jsx>
{
`body {
background: #eff0f3;
}`
}
</style>
<div className="jumbotron" style={jumbotron}>
{(page == "passform") ? (
<Passform/>
) : (
<h3>Something is wrong :/ . {page}</h3>
)}
</div>
</AdminLayout>
)
export default withRouter(Admin);
var initialprices = document.getElementsByClassName("price");
var initialpriceArray = [];
for (var i = 0; i < initialprices.length; i++) {
initialpriceArray.push(parseFloat(initialprices[i].innerHTML.replace(/\$\s/g, '')));
}
console.log("initialpriceArray", initialpriceArray);
答案 2 :(得分:0)
在这里,您将价格转换为数字:
var initialprices = document.getElementsByClassName("price");
flag = false;
//for every element in initialprices array get their value from innerhtml
for (var i = 0; i < initialprices.length; i++) {
initialprice.push(
parseFloat(initialprices[i].innerHTML.replace("$", ""))
);
console.log("the initial prices array " + initialprice);
}