Tim: Zufälliger Farbwechsel von Tabellenzellen

Hallo!
Vorneweg: Ich habe mich nie intensiv mit HTML oder JavaScript beschäftigt, ich bitte deshalb darum über Schönheitsfehler u.Ä. hinwegzusehen, ich möchte lediglich, dass es funktioniert ;)
Mehr oder weniger aus Langeweile heraus wollte ich eine Tabelle haben, deren Zellen nach einer bestimmten Zeit ihre Hintergrundfarbe in eine zufällige andere Farbe umändern. Ist ja eigentlich kein großes Problem... Es hat dann auch eine Zeit lang funktioniert, zwar nur in Google Chrome und Firefox, aber das war mir egal.Inzwischen funktioniert das Script nicht mehr und ich weiss nicht woran es liegt, da ich eigentlich keine Änderung vorgenommen habe und auch keinen Fehler entdecken kann.
Ich hoffe ihr könnt mir weiterhelfen :)

Einmal der Code von der Startseite, auf der man die Geschwindigkeit des Farbwechsels auswählt:

  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
<html>  
<head>  
<title></title>  
<link rel="stylesheet" type="text/css" href="design.css">  
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico">  
<meta name="editor" content="html-editor phase 5">  
</head>  
<body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" height="100%">  
<div align="center"><br><br>  
<p>Bist du...?</p>  
<br>  
<form action="index2.html" method="get">  
<button type="submit" name="speed" value="1000">Langweiler</button><br><br><br>  
<button type="submit" name="speed" value="250">Normalo</button><br><br><br>  
<button type="submit" name="speed" value="1">EPILEPTIKER</button>  
</form>  
</div>  
</body>  
</html>

Und einmal der Code von der eigentlichen Tabelle mit dem Script:

  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
<html>  
<head>  
<title>0</title>  
<script language="JavaScript">  
werte = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F");  
var colour;  
var tds = document.getElementsByTagName("td");  
  
function speed()  
{  
         var location = window.location.search;  
         var anfang = location.indexOf('=')+1;  
         var ende = location.length;  
         var speed = parseInt(location.substring(anfang, ende));  
         return speed;  
}  
function farbe()  
{  
         for(i=0;i<tds.length;i++){  
                 colour = "#";  
                 random();  
                 tds[i].style.backgroundColor = colour;  
                 }  
         }  
         window.setTimeout("farbe()",speed());  
}  
function random()  
{  
         for(i=0;i<6;i++) {  
                 var random = Math.round(Math.random()*16);  
                 colour += werte[random];  
         }  
}  
function setTableHeight()  
{  
        var Height = window.innerHeight;  
  
        if (!Height)  
            Height = document.documentElement.clientHeight;  
  
        if (!Height)  
            Height = document.body.clientHeight;  
  
        document.getElementsByTagName("table")[0].style.height = Height + "px";  
}  
</script>  
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico">  
<meta name="editor" content="html-editor phase 5">  
</head>  
<body onload="javascript:setTableHeight(); farbe();" onclick="javascript:history.back();" marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" height="100%">  
  
<table width="100%" border="0" cellspacing="0">  
 <tr>  
  <td>&nbsp;</td>  
  <td>&nbsp;</td>  
 </tr>  
//Tabelle hab ich der Übersichtlichkeit wegen verkürzt...  
 <tr>  
  <td>&nbsp;</td>  
  <td>&nbsp;</td>  
 </tr>  
</table>  
  
</body>  
</html>  

Das ganze gibts auch bunt und in Farbe aber leider ohne Funktion auf
http://www.tim.kilu.de
Auf der Seite hat es auch schon funktioniert bis es mysteriöser Weise den Geist aufgab :/

Vielen Dank und freundliche Grüße
Tim

  1. Hallo!
    Vorneweg: Ich habe mich nie intensiv mit HTML oder JavaScript beschäftigt, ich bitte deshalb darum über Schönheitsfehler u.Ä. hinwegzusehen, ich möchte lediglich, dass es funktioniert ;)

    Das solltest du ändern. Entweder du machst es ordentlich oder gar nicht.

    Die Fehlerkonsole verrät woran es hakt:

    » function farbe()  
    
    > {  
    >          for(i=0;i<tds.length;i++){  
    >                  colour = "#";  
    >                  random();  
    >                  tds[i].style.backgroundColor = colour;  
    >                  }  
    >          }  
    >          window.setTimeout("farbe()",speed());  
    > }
    
    

    Du schließt eine geschweifte Klammer mehr als du öffnest.
    Das hat mal funktioniert und du hast nichts verändert? Komische Sache das!

    Naja jedenfalls bricht das Script dort ab, deshalb wird die Initierungs-Funktion nie erstellt und kann daher auch nicht aufgerufen werden.

    --
    sh:( fo:| ch:? rl:( br:& n4:& ie:{ mo:} va:) de:µ_de:] zu:) fl:( ss:| ls:[ js:(
    1. Dankeschön! Manchmal sieht man den Wald vor lauter Bäumen nicht mehr...^^

  2. Hallo Tim,

    var random = Math.round(Math.random()*16);

    das liefert eine Zahl zwischen 0 und 16, daher die "unendlich" vielen Warnungen in der Fehlerkonsole des FF. Ersetz mal round durch floor.

    Zu Zufallszahlen gibt es auch einen Artikel:
    Gleichverteilte Zufallszahlen erzeugen

    Gruß, Jürgen