0
votes

Comment obtenir des cellules de chaque table avec jquery

J'ai plusieurs tables sur mon fichier html, maintenant je voulais juste voir combien d'éléments td il y a dans chaque table. J'essaye ce code:

function process() {
    let arr= $('table');
    for(let i=0; i<arr.length; i++) {
        let table = arr[i];
        let cells = table.find('tr').find('td');
        console.log(cells.length);
    }
}

Mais j'obtiens une erreur car find n'est pas une erreur de fonction à table.find ('tr'). Find ('td');

Quelle est la bonne façon de résoudre ce problème?


1 commentaires

Tables [I] doit être Tableaux.EQ (I) Si vous en avez besoin de rester comme un objet JQuery pour continuer à utiliser les méthodes de JQuery.


3 Réponses :


1
votes

Pouvez-vous essayer comme ça

function process() {
    let tables = $('table');
    for(let i=0; i<tables.length; i++) {
        let table = tables[i];
        let cells = $(table).find('tr > td');
        console.log(cells.length);
    }
}


1 commentaires

Vous devez expliquer pourquoi cela est nécessaire, sinon c'est presque une réponse de code uniquement, qui est considérée comme de faible qualité



0
votes

Voici une façon pure jQuery de faire cela:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table border=1>
  <tr>
    <td>test1</td>
    <td>test1</td>
    <td>test1</td>
    <td>test1</td>
  </tr>
  <tr>
    <td>test1</td>
    <td>test1</td>
    <td>test1</td>
    <td>test1</td>
  </tr>
</table>

<table border=1>
  <tr>
    <td>test1</td>
    <td>test1</td>
    <td>test1</td>
    <td>test1</td>
  </tr>
  <tr>
    <td>test1</td>
    <td>test1</td>
    <td>test1</td>
    <td>test1</td>
  </tr>
</table>

<table border=1>
  <tr>
    <td>test1</td>
    <td>test1</td>
    <td>test1</td>
    <td>test1</td>
  </tr>
  <tr>
    <td>test1</td>
    <td>test1</td>
    <td>test1</td>
    <td>test1</td>
  </tr>
</table>

totalCount = 0;
$('table').each(function(a, b) {
    totalCount += $(b).find('td').length
})
console.log(totalCount)
totalCount = 0;
$('table').each(function(a, b) {
    totalCount += $(b).find('td').length
})
console.log(totalCount)


0 commentaires

1
votes

laisser la table = tables [i];

Lorsque vous exécutez [#] sur un objet JQuery, le résultat est que l'élément de la pile de résultats est tiré de l'objet JQuery et n'est plus enveloppé d'un. Donc, à ce stade, vous ne pouvez pas utiliser les méthodes de jQuery sur elle, si ces méthodes sont définies sur le jquery.fn portée.

Pour résoudre ce problème, vous devez utiliser Tableaux.eq (i) pour obtenir l'élément, comme eq () garde l'élément dans un objet jQuery ou mettre L'élément de retour dans un $ () pour l'envelopper à nouveau.

Personnellement, je préconise l'utilisation de EQ () , car il s'agit d'une étape de moins que vous devez écrire pour la relancer.


0 commentaires