question de débutant

Pour toutes les discussions javascript, jQuery et autres frameworks
Répondre
team94
Messages : 2
Enregistré le : 13 mai 2021, 07:13

question de débutant

Message par team94 » 13 mai 2021, 07:24

Bonjour, je débute en JS et je bute sur un probléme

je recupére des données au format json via un script AJAX

je créer un tableau de cette manière :

Code : Tout sélectionner

 function buildTable(data) {
      var table = document.getElementById("myTable");
      for (var i = 0; i < data.length; i++) {
        var row = `<tr id="${data[i].id}">
                      <td><input class="raye" name="check" type="checkbox" value="${data[i].checkBox}"></td>
                      <td>${data[i].start} </td>
                      <td>${data[i].end}</td>
                      <td>${data[i].title}</td>
                      <td>${data[i].category}</td>
                      <td><span class="material-icons">edit</span></td>
                      <td><span class="material-icons">delete</span></td>
                  
                  </tr>`;
       
        table.innerHTML += row;

        $(".raye").change(done());
      }
    }
J'ai une fonction done, qui ajoute une class strike sur la ligne de la case qui est cocher je n'ai pas de problème cela fonctionne.

le souci est là je voudrais que lorsque la value de la case à cocher est à 1 (récupérer en bdd) à la génération du tableau il me mette également la class strike sur la ligne sélectionné.

fonction done :

Code : Tout sélectionner

 function done() {
      $("input[name='check']").change(function (e) {
        if ($(this).is(":checked")) {
          $(this).closest("tr").addClass("strike");
        } else {
          $(this).closest("tr").removeClass("strike");
        }
      });
    }
si quelqu'un passe par la et peut me filer un petit coup de main je lui en serais reconnaissant.

merci

Avatar du membre
webmaster
Administrateur du site
Messages : 563
Enregistré le : 28 févr. 2017, 15:19

Re: question de débutant

Message par webmaster » 13 mai 2021, 09:13

Bonjour

Il est probable que la fonction done() soit appelée alors que les nouveaux éléments du tableau ne sont pas encore ajoutés au document.

Il faudrait tester de relancer la fonction done() dans la console par exemple.
TJS : 25 ans et mon livre Tout JavaScript chez Dunod
https://www.toutjavascript.com/livre/index.php

team94
Messages : 2
Enregistré le : 13 mai 2021, 07:13

Re: question de débutant

Message par team94 » 13 mai 2021, 10:37

bonjour et merci de votre réponse

la fonction done n'ajoute la class que lorsque on coche la checkbox (ca fonctionne).

ce que je n'arrive pas a faire : " en français"

si la valeur de la checkbox=1 on lui ajoute la classe strike également (ou via une autre fonction que "done" peu importe)

j'ai essayé plusieurs truc ca parait simple mais rien ne marche

Avatar du membre
webmaster
Administrateur du site
Messages : 563
Enregistré le : 28 févr. 2017, 15:19

Re: question de débutant

Message par webmaster » 13 mai 2021, 11:05

Ok, je comprends mieux
pour récuperer un attribut de formulaire avec jquery, il faut utiliser prop()
$('input[type=checkbox]').prop('checked');

Voir ex ici :
https://medium.com/js-dojo/check-if-a-c ... 0unchecked.
TJS : 25 ans et mon livre Tout JavaScript chez Dunod
https://www.toutjavascript.com/livre/index.php

Répondre