web-dev-qa-db-fra.com

DataTables: TypeError: i n'est pas défini

J'ai une table comme celle-ci  Table

la table sous forme de lignes parce que pour certains utilisateurs, je dois avoir 2 lignes (comme vous le voyez à la colonne 'D')

J'essaie d'utiliser des tables de données:

<table class="table table-bordered table-hover table-striped" id="myTable">
(...)
</table>

Et j'appelle cela au début du code:

 <script>
    $( document ).ready(function() {
         $('#myTable').DataTable();
    });
</script>

Mais j'ai cette erreur:

TypeError: i est indéfini

Et la table n’est pas comme un type datatable!

Peut-être que cela ne fonctionne pas avec des lignes de rangée? Une idée?

11
Erbi Silva

FWIW, vous pouvez également obtenir cette erreur si vous n'avez pas le même nombre d'éléments <td></td> dans chaque ligne. Assurez-vous de ne pas ajouter de lignes avec des boutons de navigation, des liens ou des éléments de ce type susceptibles de ne pas être formatés de la même manière que les autres lignes.

7
Dylan Smith

le plug-in jQuery DataTables ne prend pas en charge l'attribut ROWSPAN par défaut. Cependant, il existe un plug-in RowsGroup pour jQuery DataTables qui regroupe les cellules pour leur donner l’apparence de l’attribut ROWSPAN.

Voir cet exemple pour le code et la démonstration.

Voir jQuery DataTables - ROWSPAN dans le corps de la table TBODY pour plus de détails.

4
Gyrocode.com

Je dirais que votre table n'est pas une table de données parce que vous avez des données indéfinies et que le 'i' est l'itérateur interne de la boucle DataTable. L'utilisation de la structure de lignes est le problème - je voudrais repenser votre table en une ligne complète pour chaque élément de données (dans votre exemple, 250 nécessiteraient une ligne entière avec des valeurs dupliquées pour toutes les autres colonnes sauf D) - il est tout à fait possible d'utiliser css pour masquer les valeurs dupliquées pour le même effet visuel, ceci permettrait le filtrage datatable de continuer à travailler sur ces lignes (vous aurez peut-être besoin de points d'ancrage pour révéler des données cachées lorsque ces lignes "supplémentaires" sont filtrées).

2
A Macdonald

Pour le futur référant.

C'est parce que vous utilisez Rowspan ou colspan qui n'est pas supportable. 

Si vous voulez utiliser colspan, vous pouvez l’utiliser en dehors de </tbody>.

Merci.

1
Nikunj Dhimar

Ce problème se produit si votre table n'est pas bien formée. Par exemple, vous devriez avoir <table><thead><th><tbody><tr><td>

Et puis l'identifiant de la table ne doit pas chevaucher l'identifiant de quelque chose d'autre sur la même page. Sinon, vous obtiendrez des erreurs comme i est udefined ou c est indéfini. 

0