Bonjour,
Je me demandai si il était possible de mélanger une liste <ul> apres la création de celle-ci ?
Un peu à la maniere de shuffle() en php ?
Merci
Version imprimable
Bonjour,
Je me demandai si il était possible de mélanger une liste <ul> apres la création de celle-ci ?
Un peu à la maniere de shuffle() en php ?
Merci
Tu l'as dis toi-même, ta <ul> est déjà créée, html n'est qu'un langage de structuration, tu dois forcément voir ça avant la création de ta liste ou après avec javascript.
un langage de balises, tu veux dire !Citation:
html n'est qu'un langage de structuration
Je te propose ce petit script (avec jQuery)
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 <html> <head> <title>Shuffled UL</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <script type="text/javascript"> <!-- $(function(){ // on récupère les contenus de tous les <li> de la <ul> ciblée dans un tableau JS var aLi = new Array(); $('ul#shuffle li').each(function(){ aLi.push($(this).html()); }); // on reconstruit les <li> en prenant un par un, aléatoirement, les éléments du tableau JS var sLi = ''; while(aLi.length > 0) { var i = Math.floor(Math.random()*aLi.length); sLi += '<li>' + aLi[i] + '</li>'; aLi.splice(i,1); } // on remplace le contenu de la <ul> par celui qui vient d'être généré $('ul#shuffle').html(sLi); }); //--> </script> </head> <body> <ul id="shuffle"> <li>A</li> <li>B</li> <li>C</li> <li>D</li> <li>E</li> <li>F</li> </ul> </body> </html>
Merci pour ce code et vos réponses.
Je pensais bien que cela n'était pas faisable en html...
Je vais donc laisser mon script php faire un shuffle avant de traiter l'affichage.
J'ajouterais qu'utiliser une lib pour mélanger des éléments ca devient nimp,
bande de feignasses gourmandes ^^
En ce qui me concerne j'utilise jQuery à toutes les sauces je l'avoue. Mais c'est dans un souci de clarté et de compatibilité. Même si dans certain cas (comme ici) ça n'apporte pas grand chose