welche bedeutung hat das ?
Lambach
- javascript
0 dbenzhuser0 Dieter Raber0 Cheatah0 Dieter Raber0 Henning Bösch0 Cheatah
0 lambach0 Dieter Raber0 Cheatah0 MudGuard
also ich hab jetzt in mehreren codes gesehen
bsp: NS4 = (document.layers) ? true : false;
kann mir jemand die genaue bedeutung erklären, weil es zieht so schon ziemlich nützlich aus aber wie genau setzt man es ein?
N'Obend
bsp: NS4 = (document.layers) ? true : false;
NS4 ist eine neue Variable. Der wird jetzt entweder true oder false zugewiesen, je nachdem, ob document.layers existiert oder nicht.
Hinweis: document.layers kennt nur der Netscape 4.x
Steht nachher NS4 auf true, weist du, dass der Benutzer Netscape 4.x benutzt und kannst in deinen Scripten eine entsprechend angepasste Version ausführen lassen.
Tschö,
dbenzhuser
Hallo,
Dbenzhuser hat natuerlich vollkommen recht.
Ich hatte mich seinerzeit eine ganze Zeitlang am ?: Operator schwergetan, deshalb nochmal zur Erklaerung die lange Schreibweise.
if (document.layers == true)//wenn der Browser document.layers kennt
{
NS4 = true; // haben wir es mit NS4 zu tun
}
else
{
NS4 = false; // anderfalls nicht, also ist der browser irgendein anderer
}
Dieter
Hi,
[NS4 = (document.layers) ? true : false;]
if (document.layers == true)//wenn der Browser document.layers kennt
nicht ganz; von true ist da nicht die Rede. Wäre auch falsch, denn document.layers ist selbst in Netscape 4 nicht true.
Das ganze nennt sich übrigens Bedingungs-Operator, einer der seltenen trinären Operatoren.
Cheatah
Hallo Cheatah,
Stimmt, hab ich im Eifer der Missionierung uebersehen.
Dieter
Hallo,
nicht ganz; von true ist da nicht die Rede. Wäre auch falsch, denn document.layers ist selbst in Netscape 4 nicht true.
Wie ist den genau die Auswertung?
if (document.layers != NULL)
Gruß,
Henning
Hi,
Wie ist den genau die Auswertung?
lass Dir in verschiedenen Browsern alert(document.layers) ausgeben.
if (document.layers != NULL)
Warum willst Du document.layers unbedingt mit irgendetwas vergleichen?
Cheatah
Hallo,
lass Dir in verschiedenen Browsern alert(document.layers) ausgeben.
Ein Netscape 4 habe ich nicht, andere geben undefined aus.
Warum willst Du document.layers unbedingt mit irgendetwas vergleichen?
Ich wollte einfach mal wissen aufgrund welches Ergebnis, die Entscheidung getroffen wird, so dass im Operator der 'FALSE'-Zweig gewählt wird.
Gruß,
Henning
Hi,
Ich wollte einfach mal wissen aufgrund welches Ergebnis, die Entscheidung getroffen wird, so dass im Operator der 'FALSE'-Zweig gewählt wird.
bei "if (x)" muss "x" ein Boole'scher Ausdruck sein. Das bedeutet, dass darin alles, worauf dies nicht zutrifft, konvertiert wird. So wird undefined etwa false, 0 ebenfalls, "" dito. 1 und "foo" hingegen werden true. _Leider_ sind z.B. new Array() und new Object() ebenfalls true.
Forcieren kannst Du den Boole'schen Wert mit doppelter Verneinung.
Cheatah
Hallo Cheatah,
if (document.layers != NULL)
Warum willst Du document.layers unbedingt mit irgendetwas
vergleichen?
Eine Unart von Java-Programmierern.
Grüße,
C*scnr*K
Hallo,
Eine Unart von Java-Programmierern.
Pah, immer diese C Schnösel. Die sind doch nur neidisch, weil sie hinterher immer selbst aufräumen müssen.
Gruß,
Hen*SCNR*ning
also ? kommt hinter einer variablen zuweiseung, und danach gibt man 2 werte ein. wenn das Objekt existiert nimmt die variable den 1. wert an wenn nicht den 2.
soweit richtig verstanden?
welche fragen sich mir dabei noch auftun sind
geht das nur mit objekte oder auch mit anderen typen?
müssen die werte dorthinter boolsche ausdrücke sein?
gibt es noch andere einsatzbereich, funktionen vom "?" ?
Hallo,
?: funktioniert im Prinzip immer dann, wenn Du einer Variablen in einer Bedingung einen Wert zuweisen willst
Anstatt
if(bedingung)
{
foo = 'bar'
}
else
{
foo = 'quux'
}
kannst Du immer sagen
foo = bedingung ? 'bar' : 'quux'
Das funktioniert in einer ganzen Anzahl von Programmiersprachen genauso.
Dieter
Hi,
soweit richtig verstanden?
japp. "a ? b : c" ist identisch mit "if (a) { b } else { c }", nur dass es kein eigener Anweisungsblock sein muss.
geht das nur mit objekte oder auch mit anderen typen?
müssen die werte dorthinter boolsche ausdrücke sein?
gibt es noch andere einsatzbereich, funktionen vom "?" ?
Das sollte damit ebenfalls beantwortet sein.
Cheatah
Hi,
japp. "a ? b : c" ist identisch mit "if (a) { b } else { c }", nur dass es kein eigener Anweisungsblock sein muss.
Nein. Während "if (a) { b } else { c }" keinen Wert hat (weil es eine Anweisung ist), hat "a ? b : c" einen Wert (weil es ein Ausdruck ist)
cu,
Andreas