Javascript 无法记录数据集的数值
然后在另一个JS中,而不是像这样硬编码的价格:Javascript 无法记录数据集的数值,javascript,arrays,html,webpage,Javascript,Arrays,Html,Webpage,然后在另一个JS中,而不是像这样硬编码的价格: function someFunction() { var vOne= document.getElementById("license_type"); var vTow = vOne.options; var c1 = vTow.dataset.one; var c2 = vTow.dataset.two; var c3 = vTow.dataset.three; } 这是: var pric
function someFunction() {
var vOne= document.getElementById("license_type");
var vTow = vOne.options;
var c1 = vTow.dataset.one;
var c2 = vTow.dataset.two;
var c3 = vTow.dataset.three;
}
这是:
var prices = [500, 700, 1400];
但这会生成NAN,这意味着c1,c2,c3没有数值。
修复方法是什么?您应该使用getAttribute和parseInt。还可以循环浏览选项,并使用如下所示的分解:
var prices = ['c1', 'c2', 'c3'];
看看你的代码,它似乎有三个静态选项,所以考虑到下面的代码可以工作
function someFunction() {
var vOne = document.getElementById("license_type");
var options = vOne.getElementsByTagName("option");
var [c1, c2, c3] = options.map(e => e.getAttribute("data-one"));
}
但是,如果选项是动态的,则必须循环使用这些选项。首先,我将使用获取目标选择的所有选项。然后,我将使用将所有选项映射到他的data-*属性。注意:我必须从value属性中获取data-*属性名称的第二部分,因为data-*属性似乎与value属性相关,而不是一个统一的名称:
var价格;
函数
{
var opts=document.querySelectorAlllicense\u type选项;
prices=Object.valuesopts.mapo=>
{
让token=o.getAttributevalue.match/l\uw+/[1];
返回o.getAttributedata-+令牌;
};
价格;
}
某些功能;
许可证1
许可证2
许可证3
除非你在传输,否则我不会建议去结构化,因为它仍然没有获取数值。是的,它起作用了。我希望没有浏览器兼容性问题?如果选项是动态的,你是什么意思?有什么例子吗?
function someFunction() {
var vOne = document.getElementById("license_type");
var options = vOne.getElementsByTagName("option");
var [c1, c2, c3] = options.map(e => e.getAttribute("data-one"));
}
function someFunction() {
var license_type= document.getElementById("license_type");
var c1 = license_type.options[0].getAttribute('data-one');
var c2 = license_type.options[1].getAttribute('data-two');
var c3 = license_type.options[2].getAttribute('data-three');
var prices = [c1, c2, c3];
console.log(prices)
}