Stefan: Negation - Warum funkt das plötzlich nicht mehr?

Hallo liebe Forumer!

Ich habe hier einen Quelltext, in dem ich Inhalte eines Array vergleichen und jeweils eine Alert-Meldung ausgeben will. Der Quelltext sieht so aus:

------------------
function funki() {
var inhalt = document.for2001.tel.value;

TELEFON = new Array();
TELEFON[0] = "89174";
TELEFON[1] = "89175";
TELEFON[2] = "89176";
TELEFON[3] = "89177";
TELEFON[4] = "89178";

drin=false;
for (i=0;i<=PLZ.length;i++) {
if(inhalt == TELEFON[i]) drin=true;
}
if (drin) {
alert("Howdie");
}
else
alert("nicht die richtige");

}

------------------------------------

So nun funkt das auch wunderbar. Das Problem ist aber, daß ich in der if-Schleife, gern eine Negation eingebaut hätte. Also:
---
if(inhalt != PLZ[i]) drin=true;
---

Und schon funktioniert es nicht mehr. Nun ignoriert er meine else-Schleife und gibt (egal was ich eingebe immer "Howdie" aus. Leider verstehe ich nicht ganz warum?

Ist vielleicht jemand schlauer als ich?

Danke und grüße

Stefan

  1. Hi,

    TELEFON = new Array();
    TELEFON[0] = "89174";
    TELEFON[1] = "89175";
    TELEFON[2] = "89176";
    TELEFON[3] = "89177";
    TELEFON[4] = "89178";

    drin=false;
    for (i=0;i<=PLZ.length;i++) {

    Bist Du sicher, daß hier PLZ stehen soll? Und nicht TELEFON?

    if(inhalt == TELEFON[i]) drin=true;
    }

    So nun funkt das auch wunderbar. Das Problem ist aber, daß ich in der if-Schleife, gern eine Negation eingebaut hätte. Also:

    Das funkt nicht - es mag funktionieren, was ich aber bezweifle (wg. PLZ).
    Und if-Schleifen gibt es nicht - if leitet eine Verzweigung ein, aber keine Schleife.

    if(inhalt != PLZ[i]) drin=true;
    Und schon funktioniert es nicht mehr. Nun ignoriert er meine else-Schleife und gibt (egal was ich eingebe immer "Howdie" aus. Leider verstehe ich nicht ganz warum?

    Immer noch PLZ statt TELEFON?

    cu,
    Andreas

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
    1. Hi!

      Bist Du sicher, daß hier PLZ stehen soll? Und nicht TELEFON?

      Nein Du hast natürlich recht!
      Ich hatte das Ganze für das Beispiel hier umgeschrieben (bescheuerterweise) und leider nicht alles korrigiert! Sorry!

      Das funkt nicht - es mag funktionieren, was ich aber bezweifle (wg. PLZ).

      Mit == funktioniert es schon... wenn alle Parameter stimmen... ;-)

      Und if-Schleifen gibt es nicht - if leitet eine Verzweigung ein, aber keine Schleife.

      Immer noch PLZ statt TELEFON?

      OK... also mal angenommen TELEFON würde überall statt PLZ stehen,
      dann würds leider trotzdem nur mit == und nicht mit != funktionieren.
      Leider versteh ich Deinen letzten Satz nicht ganz... if leitet eine Verzweigung ein? An sich macht es doch keinen Unterscheid, ob ich == oder != schreibe. Die Routine muss halt die beiden Operatoren vergleichen. Oder?

      »» cu,

      Andreas

      Danke und Grüße

      Stefan

      1. Hi,

        Ich hatte das Ganze für das Beispiel hier umgeschrieben (bescheuerterweise)

        Warum? Um uns auf die falsche Fährte zu locken? Um unsere Zeit zu verschwenden?

        Und if-Schleifen gibt es nicht - if leitet eine Verzweigung ein, aber keine Schleife.
        Leider versteh ich Deinen letzten Satz nicht ganz... if leitet eine Verzweigung ein? An sich macht es doch keinen Unterscheid, ob ich == oder != schreibe. Die Routine muss halt die beiden Operatoren vergleichen. Oder?

        Du schriebst: if-Schleifen
        if hat aber NICHTS mit einer Schleife zu tun, es ist eine bedingte Verzweigung, aber keine Schleife.

        Die Umkehrung der Bedingung kann so nicht funktionieren.
        Das ergäbe ja diesen Code:

        drin=false;
        for (i=0;i<=TELEFON.length;i++) {
        if(inhalt != TELEFON[i]) drin=true;
        }

        drin wird dann IMMER auf true gesetzt. Denn Dein Array TELEFON enthält unterschiedliche Werte.
        Mindestens einer der Werte unterscheidet sich also von inhalt ==> drin wird auf true gesetzt...

        cu,
        Andreas

        --
        Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
        http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/