Javascript 无法记录数据集的数值

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

然后在另一个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 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)
}