2
votes

Impossible d'extraire la valeur numérique de l'ensemble de données

  var prices = ['c1', 'c2', 'c3'];

0 commentaires

3 Réponses :


0
votes

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"));
}


1 commentaires

Je ne conseillerais pas de déstructurer à moins que vous ne transpiliez, car c'est non pris en charge par tous les navigateurs



1
votes

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.


3 commentaires

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?



0
votes

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();


0 commentaires