Die Einstellung Dokument.Körper.Klassenname als variable
Dies ist mein code zum schalten der Klasse von meinem body-tag, wenn ein Benutzer auf einen link klickt.
function switchBodyColor() {
if (document.body.className == 'blue')
document.body.className = 'red';
else if (document.body.className == 'red')
document.body.className = 'green';
else if (document.body.className == 'green')
document.body.className = 'blue';
}
Ich möchte, um die daraus resultierende Farbe als eine variable mit dem Namen " bodyColor. Also, wenn der body-Klasse "blau" und der Benutzer klickt und schaltet diese auf "rot", die ich speichern möchten, und rot wie eine variable (bodyColor) für andere Anwendungen später auf. Oder noch besser, Dokument festlegen.Körper.Klassenname als variable sich selbst und wechseln Sie dann Dokumentes.Körper.className in der switchBodyColor() Funktion mit dieser variable.
Dachte ich, etwas entlang der Linien von:
if (document.body.className == 'blue')
document.body.className = 'red',
var bodyColor = red;
oder
var bodyColor = document.body.className
um die body-Klasse als variable.
Natürlich keine der beiden Optionen arbeiten. ^_^; Wie kann ich erreichen, entweder (oder beide) der oben genannten?
InformationsquelleAutor Choy | 2010-01-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie die variable global sein:
In deinem anderen Beispiel, müssen Sie auch setzen Sie Anführungszeichen um Ihren string Farbe:
Eine weitere Möglichkeit könnte sein, die Zahl Ihre Farbe von Klassen, die lassen Sie einfache arithmetische ändern Ihre Klassen und können Sie leicht ändern Sie die Anzahl der Klassen, die Sie Durchlaufen.
Du css wäre:
Oder was auch immer Ihre Farbe Klassendefinitionen sind.
InformationsquelleAutor Jeff B
Sie speichern könnte die Farben in ein array, dann durch manipulation immer die erste Farbe im array die aktuelle Farbe:
Und dann überall, wo Sie es brauchen, in Ihrer app, rufen Sie einfach an:
Optionale Prüfung Anfangszustand
Den vorherigen code wird davon ausgegangen, dass
body
element beginnt immer mitblue
. Wenn das nicht der Fall, könnte man hinzufügen, diese one-time-code ausführen, der direkt unter derswitchBodyColor()
Funktion:Zusätzliche Erklärung
Da Sie wollen, dass die Farben immer in der gleichen Reihenfolge, würde es Sinn machen, um ein Array zu verwenden, weil Ihre Bestellung wird immer geehrt. Jedoch da es keine "
indexOf
" in mindestens IE7 und unten, haben wir keine Möglichkeit der Zuordnung der aktuellen Farbe, um seine position im array ohne Schleife.Dies ist, wo die
Array.shift
undArray.push
Befehle ins Spiel kommen.Array.shift
entfernt die ersten element im array und gibt es zurück.Array.push
nimmt, was an Sie übergeben wird, und "schiebt" es auf die Ende des Arrays. Durch die Kombination der beiden Methoden zusammen können wir das erste Element und verschieben Sie es bis zum Ende, wodurch eine Karussell-Art:So, die Bestellung ist immer anerkannt, und das erste element ist immer das, was wir wollen, so
bodyColor[0]
ist immer die aktuelle Farbe.shift()
Ich bin immer wieder erstaunt über die kleinen Funktionen, die ich nie kannte, die ändern, wie ich code. Die
Array
im JS hatshift
,unshift
,push
, undpop
. Denken Sie daran, dasspush
undunshift
Gegenzug die neue Anzahl der Elemente im array, und dasspop
undshift
Gegenzug das entfernte Element.das macht Sinn für mich, aber es ist komplizierter als das, was ich Suche im moment. Ich versuche mehr Praxis gängige javascript-Funktionen zu lernen, aber das ist eine große variation der andere array-Antwort gegeben!
Ich aktualisiert meine Antwort, damit Sie verstehen können, was Los ist besser. Ich verspreche
Array.shift
undArray.pop
sind nicht verrückt, komisch, Funktionen 🙂Danke für die zusätzliche Erklärung, Doug. Können Sie kurz erläutern, was Konsole.log(c); ist?
InformationsquelleAutor Doug Neiner
Wenn Sie möchten, legen Sie eine Globale variable, dann müssen Sie deklarieren Sie Sie außerhalb der Funktion, so dass Ihre anderen Funktionen können darauf zugreifen. So, wie es sein würde,
Können Sie ersetzen auch die if -, else if-Anweisung mit einer switch-case-block.
InformationsquelleAutor rahul
Ich würde eine Funktion schreiben und ein array für:
Dies ist natürlich vorausgesetzt, dass die
bodyColor
undclassNames
Variablen in den globalen Gültigkeitsbereich.vielen Dank 🙂
vielen Dank für eine weitere sehr gute alternative zu den, wie ich es Tat.
InformationsquelleAutor Jacob Relkin