Comment obtenir tous les li en ul à un index spécifié
Je veux écrire comme ça
var afterUl=document.querySelectorAll('ul')(sy-1];
var afterLi=afterUl.querySelectorAll('li');
Mais la ligne suivante signalera une erreur
leilei. html:128 TypeError non intercepté : impossible de lire la propriété « querySelectorAll » de non défini. . .
Comment dois-je écrire. . Aide aux novices
----- 03-06 14:50 -----
Merci à Jasonintju d'avoir signalé l'erreur.
L'erreur signalée ici n'est pas due au fait qu'il n'y a pas de méthode
querySelectorAll
方法,是由于题主的 下标 越界了,导致取到的 是undefined
,undefined
没有querySelectorAll
.Il n'y a aucun problème avec l'écriture correcte des indices.
Documentation supplémentaire
Element.querySelectorAll() - API Web MDN
----- 03-06 04:30 -----
leilei.html:128 Uncaught TypeError : Impossible de lire la propriété 'querySelectorAll' de undefined
Le message d'erreur vous a déjà rappelé que l'attribut
querySelectorAll
n'est pas lisible car indéfiniLa raison est que
querySelectorAll
是document
的方法,而不是element
est une méthode dedocument
, pas une méthode deelement
.La solution est d'utiliser
getElementsByTagName
Vous pouvez vous référer à l'introduction de ces deux API dans la documentation JavaScript
Document.querySelectorAll - Interface API Web | MDN
Ou utilisez jQueryelement.getElementsByTagName - Interface API Web |
Il existe de nombreuses façons de l'implémenter. Vous pouvez utiliser du JavaScript natif ou diverses bibliothèques js pour l'implémenter.
Ici, nous utilisons JavaScript natif pour organiser une idée, ajoutons un attribut id à l'élément DOM de ul, supprimons l'ul via document.getElementById, puis supprimons l'élément li via getElementsByTagName.
Le code est le suivant :
let oLis = document.getElementsByTagName("ul")[index].getElementsByTagName("li");
J'ai trouvé l'erreur moi-même, car la variable sy dans mon index suivant [sy-1] a été attribuée lors du parcours de tous les li auparavant, car tous les li sont bien plus que tous les ul, donc [sy-1] dépasse le nombre ul. la ligne supérieure ne sera pas définie et la ligne inférieure signalera une erreur.
Merci à tous. . Cette question est trop enfantine. .