var prices = ['c1', 'c2', 'c3'];
3 Réponses :
Vous devez utiliser getAttribute
et parseInt
. Parcourez également les options et utilisez la déstructuration comme ceci:
function someFunction() { var vOne = document.getElementById("license_type"); var options = vOne.getElementsByTagName("option"); var [c1, c2, c3] = options.map(e => e.getAttribute("data-one")); }
Je ne conseillerais pas de déstructurer à moins que vous ne transpiliez, car c'est non pris en charge par tous les navigateurs
En regardant votre code, il semble qu'il ait trois options statiques, donc étant donné que le code ci-dessous fonctionnera.
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) }
Mais si les options sont dynamiques, vous devrez parcourir le options.
Ne récupère toujours pas la valeur numérique.
Oui, cela a fonctionné. J'espère qu'il n'y a pas de problème de compatibilité du navigateur?
qu'entendez-vous par si les options sont dynamiques? Un exemple?
Tout d'abord, j'utiliserai querySelectorAll () a > pour obtenir toutes les options de la cible, sélectionnez. Ensuite, j'utiliserai Array :: map ( ) pour mapper toutes les options à son attribut data- *
. Remarque Je dois récupérer la deuxième partie du nom de l'attribut data- *
de l'attribut value
, car l'attribut data- *
semble être lié à l'attribut value
(n'est pas un nom uniforme):
<select class="license_type" name="license_type" id="license_type"> <option value="l_one" data-one="500">License 1</option> <option value="l_two" data-two="700">License 2</option> <option value="l_three" data-three="1400">License 3</option> </select>
var prices; function someFunction() { var opts = document.querySelectorAll("#license_type option"); prices = Object.values(opts).map(o => { let token = o.getAttribute("value").match(/l_(\w+)/)[1]; return o.getAttribute("data-" + token); }); console.log(prices); } someFunction();