Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Problem mit if...else-Anweisung





Frage

<script type="text/javascript"> function change(element) { if (element.style.background != "#baa"){ element.style.background = "#c00"; } else { element.style.background = "#baa"; }} </script> <input type="button" style="background:#baa" onclick="change(this)"> ... die farbe dieses buttons soll bei anklicken immer zwischen 2 farben wechseln... problem ist, dass die else-anweisung nicht zur wirkung kommt, da ich irgendeinen fehler bei der bedingung gemacht habe. der computer sieht die bedingung also fälschlicherweise immer als erfüllt an und führt die if-anweisung aus. was muss ich ändern?

Antwort 1 von logikfehler

hi

ich seh auf Anhieb zwei Dinge, die mich verwirren:

Du hast zwei schließende klammern am Ende.
Eine davon kannst du streichen, da die Syntax

if ( ) {
}
else {
}
wäre.

Außerdem würde ich die Farben mit 6 Stellen schreiben, also #RRGGBB und nicht nur #RGB

Im Übrigen weiß ich nicht, wie hier überhaupt eine Abfrage entstehen soll :
Die Ausgangsfarbe des Buttons ist ja schon #baa - d.h. die if-Anweisung kann nie false werden.

Antwort 2 von son_quatsch

Deine zwei geschweiften Klammern sind schon richtig (eine zum beenden des IF-Konstrukts und eine zum beenden der Funktion).

Der Fehler liegt im CSS und auch darin, was der Browser draus macht. Die CSS-Eigenschaft "background" ist eine Zusammenfassung aus background-color, background-image, background-position... usw. Du solltest also zumindest erstmal nur die Farbe überprüfen, nämlich

element.style.backgroundColor


Desweiteren muss der Browser nicht deine Farbangabe wortgenau übernehmen. Er wird zumindest #bbaaaa draus machen - und im Zweifelsfall das ganze immer in Großbuchstaben. Entweder sicherst du dich damit ab, indem du alles in Kleinbuchstaben und ausgeschrieben vergleichst, wie z.B.:

if (element.style.backgroundColor.toLowerCase() == '#bbaaaa'){


...oder überprüfst generell erst einmal, was dir backgroundColor in den verschiedenen Browsern (MSIE, FFOX, OPER) so zurückliefert:

alert( element.style.backgroundColor );


Antwort 3 von pudw

die 2.klammer schließt die function

#RRGGBB hab ich ausprobiert, macht keinen unterschied

es war eigentlich so gedacht, dass die ausgangsfarbe #baa durch die if-anweisung zu #c00 verändert wird und so bei erneutem draufklicken die else-anweisung zur wirkung kommt.

kannst du mir eine alternative anbieten?

Antwort 4 von son_quatsch

Naja, lesen musst du schon alleine.

Antwort 5 von pudw

...das galt antwort 1

klappt jetzt... "==" war der schlüssel

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: