Page 1 sur 1

question de débutant

Posté : 13 mai 2021, 07:24
par team94
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

Re: question de débutant

Posté : 13 mai 2021, 09:13
par webmaster
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.

Re: question de débutant

Posté : 13 mai 2021, 10:37
par team94
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

Re: question de débutant

Posté : 13 mai 2021, 11:05
par webmaster
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.