UL zufällig anordnen

Jan-Frederik Stieler

Monsterator
Moderator
Hallo,
kann man mit Javascript die li einer unsorted list zufällig anordnen lassen?
Und wenn ja wie realisiert man sowas?

Viele Grüße
 
Zuletzt bearbeitet:
Moin Jan,

jo, kann man.

Hier mal ein simples Beispiel:
Code:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; 
                                charset=ISO-8859-1"   />
<meta name="author"             content="doktormolle" />
<meta name="date"               content="2010-02-13" />
<title>Test</title>
</head>
<body>
<ul>
<li>#1
<li>#2
<li>#3
<li>#4
<li>#5
<li>#6
</ul>
<script type="text/javascript">
<!--
liste=document.getElementsByTagName('ul')[0].getElementsByTagName('li');
for(i=0;i<liste.length;++i)
{
  rand=Math.round(Math.random()*(liste.length-1));
  if(rand==i)continue;
  liste[i].parentNode.insertBefore(liste[i],liste[rand])
}

//-->
</script>
</body>
</html>
 
Hi,
ich hab jetzt versucht die UL über deren ID mit .getElementByID('uebersichtsmenu')[0].
Also ich hab das .getElementsByTagName('ul')[0] gelöscht und damit ersetzt.
Leider funktioniert das Ganze jetzt nicht mehr. Eigentlich müßte es doch egal sein ob ich UL direkt üebr das Element anspreche oder üebr die ID oder hab ich da ein Syntaxfehler drinnen?

Viele Grüße
 
Hi Sven,
ich hab noch ne Frage und zwar welchen Sinn hatt das -1 hinter length?
Damit kann ich doch normalerweise die Ausgabelänge eines String angeben. Zumindest habe ich das so in meinem schlauen Buch verstanden :) .

Viele Grüße
 
Hi,

mit dem length ist die Anzahl der Elemente in einem Array gemeint - siehe SelfHTML.

Und da es sich bei einem JS-Array um einen 0-indiziertes Array handelt, läuft die Zählvariable von 0 .. length-1.

Ciao
Quaese
 
Hi,
also mein Array ist doch eigentlich die Liste. Und in dem Beispiel hat die Liste 6 Elemente. Warum geht läuft die Zählvariable dann nur bis 1?
Sorry für die dämlichen fragen. Ich versuche nur zu verstehen :) und mir fehlen noch einiges an Grundwissen- und verständnis.

Ich will grad auch ncohmal die Anzahl der Ausgabe z.B. auf nur 3 reduzieren ohne die Liste ansich im Quellcode zu reduzieren. Ich dachte das könnte ich machen in dem ich length beschränke. Aber ich denke ich hab da eine falsche Vorstellung der Realisation.

Viele Grüße
 
Hi,

die Laufvariable läuft von 0 bis 5. Du kannst dir das ja mal ausgeben lassen:
Code:
<ul>
<li>#1
<li>#2
<li>#3
<li>#4
<li>#5
<li>#6
</ul>
<div id="debugID"></div>
<script type="text/javascript">
<!--
liste=document.getElementsByTagName('ul')[0].getElementsByTagName('li');

for(i=0;i<liste.length;++i){
  rand=Math.round(Math.random()*(liste.length-1));
  if(rand==i)continue;
  liste[i].parentNode.insertBefore(liste[i],liste[rand]);
  document.getElementById("debugID").innerHTML += "i = " + i + "<br />";
}
//-->
</script>

Wie ist das andere Problem zu verstehen? Du willst aus der bestehenden Liste drei Elemente zufällig auswählen und in eine andere Liste schreiben?

Ciao
Quaese
 
Nein, es sollen nur z.B. max 3 der bestehenden 6 Lis angezeigt werden aber die für den Zufall sollen die Informationen aller 6 Lis verwendet werden.

Gruß
 

Neue Beiträge

Zurück