Klitzekleine Frage: if-anweisung mit ||

Marius Heil

Erfahrenes Mitglied
Hi,

nur ne kurze Frage, obwohl ich schon ne ganze Weile mit Flash programmier hab ichs immer noch nicht kapiert, wie ich mit || mehrere Sachen prüfe in eienr if-anweisunge, nehmen wir ein Textfeld:
ich kann schreiben:
if (textfeld.text == 1 || textfeld.text == 2 || textfeld.text == 3)
allerdings ist das sehr lange, es müsste doch von der logik doch auch so gehen, oder?:
if (textfeld.text == (1 || 2 || 3))
aber so funktioniert das wohl irgendwie nicht, wie muss ich das denn korrekt mit Klammern formulieren?



Marius
 
Hi,

nein das geht so nicht, weil es sich um logische Verknüpfungsoperationen handelt (1 || 2 || 3 ergibt z.B. 1).

Wenn Du viele mögliche Werte hast, kannst Du Dir allerdings eine Funktion schreiben, die diese Werte in einem Array übergeben bekommt:
PHP:
function oneOf(werte_array) {
    var resp = false;
    for (var i=0; i<werte_array.length; i++) {
        if (textfeld.text == werte_array[i]) {
            resp = true;
            break;
        }
    }
    return resp;
]

trace(oneOf(new Array(1, 2, 3, 4, 5, 6, 7)));
(damit bekommst Du "true" geliefert, wenn mindestens einer der Werte in dem Textfeld steht)

Gruß
.
 
Wow, danke, das hätte ich nun wirklich nicht gedacht, kann es sein, dass das in PHP geht?
Wenn nicht, hab ich an der einen Stelle nen Programmierfehler :D
Ich dachte, ich hätte irgendwo mal gelesen, dass es auf diese Weise geht, mhhh,...

Naja, Vielevielen dank.

Inzwischen kann man sich registrieren, aktivieren, profilieren, Herausfordern und auch Herausforderungen annehmen, sind noch einige Feinheiten, die Sicherheit lässt zu wünschen übrig und einige Macken in der Programmeirung, aber es wird :)



Marius
 
Mag sein, dass ich etwas übersehe, aber für das Ergebnis eines (oder mehrerer) Vergleiche, musst Du sie so anordnen, dass der Ausdruck einen boolschen Wert (true oder false) zurückgibt (wobei für true in der Regel auch alle von 0 verschiedene Werte gelten).
Code:
if (a == (1 || 2 || 3))
ergibt nur für a = 1 true zurück,
Code:
if (a == (1 | 2 | 3))
hingegen nur für a = 3 (logische vs. Bitweise Verknüpfung).

Bei bestimmten Bereichen, kannst Du natürlich auch
Code:
if (a >= 1 && a<=3) {
schreiben.

Gruß
.
 
Hi,

ok, das hab ich verstanden, danke, hab das ganze wie du mir geschrieben hattest einach mit ner for-anweisung gelöst, weil alles aufzuschreiben ist zu lang.



Marius
 
Zurück