2012-04-15 5 views
0

Ich frage mich nur, warum mein Code nicht funktioniert. Mache ich das völlig falsch?Wie weise ich Links eine zufällige Farbe zu?

window.onload = function random() { 
    var links = document.getElementsByTagName('a'); 
    var colours = new Array("green","red","blue"); 
    var randomColour = colours[Math.floor(colours.length * Math.random())]; 
    for (a = 0; a < links.length; a++) { 
     links[a].style.color = 'randomColour'; 
    } 
} 

Antwort

1

'randomColor' ->randomColor.
Verwenden Sie eine Variable anstelle einer Zeichenfolge in Anführungszeichen. Auch, um sicherzustellen, dass jeder Link eine zufällige Farbe erhält, erzeugt die Farbe in der Schleife:

for (var a = 0; a < links.length; a++) { 
    var randomColour = colours[Math.floor(colours.length * Math.random())]; 
    links[a].style.color = randomColour; 
} 

Um die Verzögerung zwischen Einstellen der Farbe zu minimieren, und Analysieren der Verbindung, bindet ein DOMContentLoaded Ereignis oder einfach den Code einfügen am Ende der <body>:

http://jsfiddle.net/V6Chb/1/

<a>Test</a> 
    ... 
<a>Test</a> 
<script> 
(function() { // <-- Anonymous function to not leak variables to the global scope 
    var links = document.getElementsByTagName('a'); 
    var colours = ["green", "red", "blue"]; 
    for (var a = 0; a < links.length; a++) { 
     var randomColour = colours[Math.floor(colours.length * Math.random())]; 
     links[a].style.color = randomColour; 
    } 
})(); 
+0

Wow dank, wie eine einfache Lösung! – Harry

+0

Im Gegensatz zu dem, was Sie behaupten, garantiert dies nicht, dass jeder Link eine andere Farbe erhält. Ein besserer Weg könnte sein, das Farbfeld zu mischen. Natürlich, wenn es mehr Links als Farben gibt, kann man sowieso keine eindeutige Farbe zuweisen ... einfach sagen :) –

+0

@FelixKling Jeder Link bekommt eine der Farben im Array: http://jsfiddle.net/V6Chb/. Wenn das Array also "rot" und "grün" enthält und dieser Code auf einer Seite mit beispielsweise 1000 Links verwendet wird, ist mindestens ein Link rot und mindestens einer grün (in den meisten Fällen). –

Verwandte Themen