|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() Jérémy Fontaine Inscription : novembre 2010 Messages : 20 ![]() |
Bonjour,
Je viens d'apprendre le javascript en cours et je n'ai aucune base si ce n'est que le langage java lui même bref. Pour un td on doit compter le nombre de liens (a) contenu dans un éléments (li). Je n'ai vraiment pas d'idée sur le code. Pour compter le nombre de lien ok, mais sinon... Code :
Comme spécifier que les liens doivent être contenus dans des "li" ? Merci. |
||
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 847 ![]() |
Code js :
|
||
|
|
00
|
|
|
#3 | ||
|
Invité régulier
![]() Jérémy Fontaine Inscription : novembre 2010 Messages : 20 ![]() |
Merci Willpower, mais si le lien est fils d'un paragraphe et que ce paragraphe est fils d'un li alors il sera comptabilisé et ce n'est pas le résultat souhaité.
Par exemple pour ce code ça doit retourner 5: Code :
|
||
|
|
00
|
|
|
#4 |
|
Membre chevronné
![]() Krusty Inscription : mai 2009 Messages : 472 ![]() |
et avec l'objet links
__________________
programmer n'est pas connaitre tous les moindres détails d'un langage mais savoir exploiter sous toutes ses facettes ce que l'on connait. |
|
|
00
|
|
|
#5 | |||
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 847 ![]() |
Citation:
|
|||
|
|
00
|
|
|
#6 | ||
|
Invité régulier
![]() Jérémy Fontaine Inscription : novembre 2010 Messages : 20 ![]() |
pas de soucis je pense que je n'ai pas assez détaillé le problème. J'ai essayé ça mais rien de concluant:
Code :
|
||
|
|
00
|
|
|
#7 | ||
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 847 ![]() |
Code js :
|
||
|
|
10
|
|
|
#8 | ||
|
Invité régulier
![]() Jérémy Fontaine Inscription : novembre 2010 Messages : 20 ![]() |
Merci WillPower ça marche
Je vais essayer de comprendre où j'ai coincé dans mon code:Code :
Merci à tous! |
||
|
|
00
|
|
|
#9 | |||||
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 847 ![]() |
Citation:
Code :
sinon ton erreur : if (a[i].parentNode==(document.getElementsByTagName('li'))[0]) ça comparait le noeud parent de ton lien (jusque là ok) au premier ([0]) li récupéré dans le tableau de tous les li de ta page ! |
|||||
|
|
00
|
|
|
#10 | ||||||||
![]() ![]() Inscription : janvier 2011 Messages : 2 930 ![]() |
Citation:
Code :
Tu aurais également pu faire l'approche suivante Code :
La différence ? le nombre d'itération, je n'est pas testé car cela va dépendre du type de document que l'on a à scruter. C'est une alternative. Citation:
Code :
|
||||||||
|
|
20
|
|
|
#11 |
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 847 ![]() |
|
|
|
00
|
|
|
#12 | |
|
Membre chevronné
![]() Krusty Inscription : mai 2009 Messages : 472 ![]() |
Citation:
__________________
programmer n'est pas connaitre tous les moindres détails d'un langage mais savoir exploiter sous toutes ses facettes ce que l'on connait. |
|
|
|
00
|
|
|
#13 |
![]() ![]() Inscription : janvier 2011 Messages : 2 930 ![]() |
il existe au moins 4 collections mondialement connues, enfin presque..
- forms, celle la est surement la plus connue et la plus utilisée - images, qui tombe en désuétude, mais qui peut rendre de grand service de mise en page notamment - links, celle la elle est presque complètement oubliée à en voir les forums, et pourtant bien utile également - anchors que plus personne ne connaît ou presque. une mise en garde toutefois, IE n'accepte pas document.links('name_du_lien') alors que les autres oui...et encore plein de petit détail A quoi cela sert que les navigateur se décarcasse? |
|
|
00
|
|
|
#14 | ||||
|
Membre expérimenté
![]() ![]() Duke Jikel Inscription : mai 2010 Messages : 340 ![]() |
Même si la solution JS pure a été donnée, je donne quand même la mienne
Code :
Cette méthode peut-être performante si filter est natif. note : Cette solution ne fonctionne pas sous IE6, IE7 car ils implémentent une vieille version de Javascript (JS 1.5). Sinon avec des librairies on le fait en une ligne aussi : Code :
|
||||
|
|
00
|
|
|
#15 | |||||
|
Membre Expert
![]() Tlouye Ci Inscription : mars 2004 Messages : 1 450 ![]() |
Citation:
C'est quoi le proverbe avec le poisson et la pêche déjà ? Citation:
Citation:
D'accord y'a pas de boucle imbriquée mais statistiquement ça fera plus d'itération (or c'est le nombre d'itération qui fait la complexité) qu'une boucle imbriquée sur les li :
Donc comme le dit NoSmoking, ça dépend du style de document : dans le cas d'une table des matière ce sera équivalent, dans le cas d'un listing il sera préférable de parcourir les "a", dans une page standard (avec un header, un menu, des rubriques, un footer) il sera préférable de parcourir les "li". Bon, je dis ça sans avoir fait d'étude préalable mais je suis persuadé que si on choisi 10000 sites au hasard et qu'on fait le ratio a vs li sur chacune de leurs pages, ça devrait corroborer ce que je dis. PS : La page actuelle contient 440 <a et 113 <li>, chaque <li> contient un seul et unique fils, ce fils est soit un <a>, soit un <span>, soit un élément texte. Soit une complexité de 113 vs 440. ^_^ |
|||||
|
|
10
|
|
|
#16 | |
|
Membre expérimenté
![]() ![]() Duke Jikel Inscription : mai 2010 Messages : 340 ![]() |
Citation:
Ensuite oui ta solution est plus rapide :o, mais si ta page ne se comporte d'un menu en liste, tu peux être sur que ta solution ne sera pas aussi performante Surtout que tu relances un getElementByTagName pour chaque LI. enfin bon, j'avoue que c'est du pinaillage |
|
|
|
00
|
|
|
#17 |
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 847 ![]() |
Effectivement Loceka, ta méthode même si dans certains cas est plus rapide (ou peut être plus rapide... je n'ai non plus aucun teste ni théorie pour me baser) je pense que dans la généralité des cas elle sera plus lente. D'autant plus que comme le dit dukej, les appels en boucle de getElementByTagName vont renvoyer à chaque fois un nouveau "Array" contenant les A du LI. Et il me semble que cette création d'array(+ parcours?) va faire perdre "beaucoup" au niveau de performances. (mais ce n'est effectivement qu'une intuition, basé sur rien d'autre.).
ps: sinon bien vu quand même, je n'avais même pas vu que dans certains cas le nombre d'itérations serait moindre. |
|
|
00
|
|
|
#18 |
|
Invité régulier
![]() Jérémy Fontaine Inscription : novembre 2010 Messages : 20 ![]() |
Merci à tous! Grâce à vous j'ai pu comprendre l'erreur et apprendre aussi des choses. J'apprécie également les liens fournis par Loceka, ça me permet d'approfondir mon cours.
PS: Désolé du retard de réponse! A bientôt! ![]() Jeremux |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com