2017-01-26 4 views
0

Ich versuche, etwas sehr ähnlich zu dem JSFiddle hier gefunden, http://jsfiddle.net/Pp5up/, wo jedes Mal eine Seite lädt die Hintergrundfarbe ändert.Load unterschiedliche CSS jedes Mal eine Seite lädt

Das Problem, mit dem ich mich befinde, ist, dass das obige Beispiel den Hintergrund des Körpers ändert. Ich versuche, die Hintergrundfarbe eines Div jedes Mal zu ändern, wenn eine Seite geladen wird. Ich habe es stundenlang versucht, aber es scheint einfach nicht funktionieren zu können. Hier ist mein Code: http://jsfiddle.net/Pp5up/11/

HTML

<div id="nm-single-product-bg"> 
Test 
</div> 

CSS

#nm-single-product-bg.style1 {background:red;} 
#nm-single-product-bg.style2 {background:blue;} 
#nm-single-product-bg.style3 {background:black;} 

JS

var rand = Math.floor((Math.random()*3)+1); 
var style = "style" + rand; 
document.getElementsById("nm-single-product-bg")[0].className+=style 

Wenn jemand helfen kann, wäre ich so dankbar!

+2

Randbemerkung, es ist 'getElementById' nicht' getElementsById'. http://jsfiddle.net/j08691/h6es01ur/. IDs sind im Gegensatz zu Klassen eindeutig. – j08691

+2

Willkommen bei Stack Overflow Wes Asbell! Haben Sie [Ihre Konsole überprüft?] (Http://stackoverflow.com/documentation/javascript/185/getting-started-with-javascript/714/using-console-log) Sie werden sehen, was das Problem dort verursacht. –

+2

@ j08691 Das ist keine Randnotiz, es ist das Problem. Das und das '[0]'. –

Antwort

1

Ändern Sie diese Zeile

document.getElementsById("nm-single-product-bg")[0].className+=style 

dieser

document.getElementById("nm-single-product-bg").className+=style 

Die Ursache hierfür bereits in den Kommentaren erwähnt :)

ID ist für jedes Element einzigartig, so dass ihr getElementById statt getElementByIds & da es immer ein eindeutiges div zurückgibt, keine Notwendigkeit für dieses Array tiefgestellt.

DEMO

Verwandte Themen