Partage
  • Partager sur Facebook
  • Partager sur Twitter

Lecture de plusieurs array de même id

    7 juin 2021 à 22:53:38

    Bonjour,

    Excusez moi de vous déranger mais je rencontre un problème, je m'explique.

    J'ai un input entouré d'un for each, qui affichage autant d'input qu'il n'y a de clé avec le for each.

    J'aimerai traiter indépendamment chaque input, je m'explique 

    Cet input est généré donc autant qu'il y a de produit, et chaque input à un traitement spécial :

      var x = document.getElementById('quantite_produt').value;
      var y = document.getElementById('prix_produit_de_base').value;
      var prix_produit = document.getElementById('prix_produit');
    
      var letotal = (x * 10 * y * 10) / 100;    i   // x will be 0.3
    
      prix_produit.value = letotal;

    Le soucis c'est que mon script ne traite que mon premier input étant donné qu'ils ont tous le meme nom, comment faire...

    Je vous remercie,

    • Partager sur Facebook
    • Partager sur Twitter
      8 juin 2021 à 11:32:13

      Essaye de rajouter une class

      Et de les appeler avec :

      document.getElementsByClassName('tondiv')[i];

      Sinon faudrait un peu plus de ligne de code parce que c'est un peu léger comme ca. ;)

      -
      Edité par VertoDebru 8 juin 2021 à 11:33:38

      • Partager sur Facebook
      • Partager sur Twitter
        8 juin 2021 à 13:52:28

        Merci beaucoup pour votre aide, j'ai tenté de mettre en application ton conseil, voici à nouveau avec plus de précision mon code :

        Voici le JavaScript modifié, j'ai mit en application le getElementsByClassName, entouré d'une boucle (test étant donné que j'ai mit tant que i<=2 : je devrais mettre un tableau.longueur mais cela ne fonctionné pas non plus...)

        function calculate() {
        
        
        for (let i = 0; i <= 2; i++) {
        
          var x = document.getElementsByClassName('quantite_produit')[i].value;
          var y = document.getElementsByClassName('prix_produit_de_base')[i].value;
        var prix_produit = document.getElementById('prix_produit'); var letotal = (x * 10 * y * 10) / 100; i // x will be 0.3 prix_produit.value = letotal; } }

        Voici mon HTML que je n'ai pas fourni précédemment, 

           <?php foreach($produits as $leproduit => $valeur){ ?>
            <!-- Début des modifications de prix -->
        <div class="input-group mb-2">
            <div class="input-group-prepend" style="width:37%">
                <span class="input-group-text"><?= $valeur->value; ?></span>
            </div>
            <div class="quantite_produit">
            <input id="quantite_produit" name="quantite_produit[]" step="any" type="number" class="form-control" value="1" oninput="calculate()">
            </div>
            <div class="input-group-append">
                <span class="input-group-text">quantité</span>
            </div>
            <div class="prix_produit_de_base">
        <input id="prix_produit_de_base" type="hidden" name="prix_produit_de_base" value="<?= RecuperationProduit($valeur->value)->prix;?>"/> </div> <input id="prix_produit" name="prix_produit[]" step="any" type="number" class="form-control" oninput="calculate()" value="<?= RecuperationProduit($valeur->value)->prix; ?>"> <div class="input-group-append"> <span class="input-group-text">€</span> </div>

        Comme vous pouvez le voir j'ai bien entouré mes deux inputs par les div : 

            <div class="quantite_produit">
        

        et 

            <div class="prix_produit_de_base">
        Dans mon HTML j'ai 3 inputs, le premier est :
        La quantité du produit que je vais multiplié avec mon second input qui est le prix de base de mon produit, le résultat de ce produit s'inscrit grace à ma fonction dans l'input portant le nom : prix_produit. 
        Voici le rendu :

        Pour l'instant je ne calcul pas le prix total avant d'avoir résolu mon problème précédemment, en vous remerciant de votre aide

        • Partager sur Facebook
        • Partager sur Twitter
          14 juin 2021 à 20:42:49

          Heu, je ne sais pas si c'est ça qui pose problème, mais je me permet de rappeler que l'attribut id doit être unique. Alors bon, ça pourrait expliquer pourquoi il ne traite que le premier.
          • Partager sur Facebook
          • Partager sur Twitter

          Lecture de plusieurs array de même id

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown