Der Martin: Funktions-Schleife "hängt" nach erster Funktion

Beitrag lesen

Hi,

Ich wollte mal was neues ausprobieren, in dem ich einen Link schaffe, der die Hintergrundfarbe auf schwarz und die Textfarbe auf weis ändert UND auch wieder zurück (!).

der Sinn dieser Aufgabe sei dahingestellt, aber zum Üben nicht schlecht.

Nur aus irgendeinem mir nicht ersichtlichen Grund klappt es zwar, das er beim ersten Klick alles schön ändert, doch dann verlässt ihn wohl der Mut, denn beim zweiten Klick macht er gar nichts mehr.

Doch, und zwar genau dasselbe wie beim ersten Klick. Weil die Bedingungen noch die gleichen sind.

Woran könnte das liegen?

An mangelndem Debugging. Deine Variablen enthalten nicht die Werte, die du erwartest. Einer der Kernaspekte beim Debugging ist: Wenn nicht das passiert, was du erwartest, gehe schrittweise vor. Verfolge den Ablauf z.B. anhand von Kontrollausgaben, in Javascript etwa mit console.log() oder notfalls mit alert().

function daynight () {

var style=document.body.style.background;

if (style=='#000000'){
             style='#ffffff'
         }else{
             style='#000000'
         }

  
Stop. Was passiert bis hierher?  
Welche Anweisung (welcher Zweig) wird ausgeführt, welche nicht?  
Um das logisch nachzuvollziehen, solltest du nachprüfen, was in deiner Variablen style steht. Du wirst staunen. Die CSS-Eigenschaft background ist eine Sammeleigenschaft, die in \*einem\* String \*alle\* Informationen zum Hintergrund des betrachteten Elements enthält - außer der Farbe also z.B. auch Hintergrundbild(er) und deren Ausrichtung. Der Vergleich mit '#000000' wird also niemals zutreffen!  
  
Na dann, den nächsten Schritt schaffst du wieder alleine.  
  
So long,  
 Martin  

-- 
Ordnung schaffen heißt, das Eigelb vom Dotter zu trennen.  
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(