frank_eee: Tüftler gesucht

Guten Abend (fast schon Nacht),

wenn Du ein bischen Ahnung von JavaScript hast kannst du mir doch sicher sagen, was bzw. warum der untenstehende Script nicht funktioniert. Ich habe jetzt den ganzen Abend daran herumprobiert und komme einfach nicht weiter. Die einzigsten Resultate die ich bekommen habe sind die, dass für Eingabe="4" bzw. Eingabe="6" das richtige raus kommt. Allerdings sehe ich keinen Unterschied zu den anderen 'Eingaben' also frage ich mich, wieso ein Wert von z.B. Eingabe="2" nicht funktioniert.

Wenn du's wissen solltest worans hapert, teil's mir bitte mit.
Danke im Vorraus.
Gute Nacht aus München.
frank_eee

Quelltext:
     titels=daten[i].titel;
      ziels=daten[i].adr;
    beschrs=daten[i].beschr;

if(titel=="true",ziel=="false",beschr=="false"){Eingabe="1"};

if(titel=="false",ziel=="true",beschr=="false"){Eingabe="2"};

if(titel=="false",ziel=="false",beschr=="true"){Eingabe="3"};

if(titel=="true",ziel=="true",beschr=="false"){Eingabe="4"};

if(titel=="true",ziel=="false",beschr=="true"){Eingabe="5"};

if(titel=="false",ziel=="true",beschr=="true"){Eingabe="6"};

if(titel==true,ziel==true,beschr==true){Eingabe="7"};

switch(Eingabe)
{
case "1":
erg+=titels.link(ziels) +"<br><br>";
break;

case "2":
erg+=ziels.link(ziels) + "<br><br>";
break;

case "3":
erg+=beschrs.link(ziels) +"<br><br>";
break;

case "4":
erg+=titels +"<br>"+ ziels.link(ziels) + "<br><br>";
break;

case "5":
erg+=titels.link(ziels) +"<br>" + beschrs +"<br><br>";
break;

case "6":
erg+=ziels.link(ziels) +"<br>" + beschrs +"<br><br>";
break;

case "7":
erg+=titels +"<br>"+ ziels.link(ziels) + "<br>" + beschrs +"<br><br>";
break;

default:
erg+="schonwieder...";
break;}

}
}

  1. if(titel=="true",ziel=="false",beschr=="false"){Eingabe="1"};

    was auch immer in der Vorgeschichte passiert ist....

    statt "," versuche mal "&&" (=AND) oder "" (=ODER) was auch immer du willst (ich vermute mal AND)

    n.d.p.

    1. Wunderbar,

      recht herzlichen Dank meinerseits (das AND war es gewesen).

      Worin besteht eigentlich der Unterschied ob ich nun & oder AND oder einfach nur ein Komma nehme?

      München grüßt.
      frank_eee

      1. Wunderbar,

        recht herzlichen Dank meinerseits (das AND war es gewesen).

        Worin besteht eigentlich der Unterschied ob ich nun & oder AND oder einfach nur ein Komma nehme?

        Ganz einfach: AND und , gibt's nicht.
        In die Liste der logischen Operatoren gehören nur &&
        <../../tebf.htm#a4>

        1. Hallo!

          Ganz einfach: AND und , gibt's nicht.

          Gut gesagt! *g* Naja, das Komma gibt es eigentlich schon, nur ist es kein logischer Operator. Das war wohl eines der Probleme (ein weiteres war das Einfassen der true/false in ""): Es wurde einfach der letzte Ausdruck in der Liste innerhalb des if's bewertet, der Rest war egal.

          So lange

          1. *schmunzel*

            war natürlich ein Verschreiberli - wollte eigentlich UND sagen (hab ja auch ODER gesagt...)

            cua

            n.d.p.

      2. Hallo,

        Worin besteht eigentlich der Unterschied ob ich nun & oder AND oder einfach nur ein Komma nehme?

        Es gibt auch Unterschiede zwischen "&", "&&", "" und "". Wenn nur "&" oder "" in einem logischen Vergleich stehen, werden erst beide Seiten des Ausdruckes ausgewertet und dann verglichen. Sollte dort jedoch "&&" oder "" stehen, wird erst der linke Ausdruck ausgewertet. Sollte dies schon zu einem klaren Ergebnis führen (true bei "" oder false bei "&&") dann wird der rechte Ausdruck gar nicht mehr beachtet.
        Kleines Beispiel:

        a=10;
        if(a==20 && b==10)

        Obwohl b garnicht existiert wird keine Fehlermeldung ausgegeben, da "a==20" schon false und somit "&&" ebenfalls false ergibt. Somit wird "b==10" nicht beachtet. Schreibt man jedoch:

        a=10;
        if(a==20 & b==10)

        Hier erscheint eine Fehlermeldung das b nicht existiert, da erst beide Seiten von "&" ausgewertet werden.

        grüße
        Thomas Mell

        1. Hallo,

          Worin besteht eigentlich der Unterschied ob ich nun & oder AND oder einfach nur ein Komma nehme?

          Es gibt auch Unterschiede zwischen "&", "&&", "" und "". Wenn nur "&" oder "" in einem logischen Vergleich stehen, werden erst beide Seiten des Ausdruckes ausgewertet und dann verglichen. Sollte dort jedoch "&&" oder "" stehen, wird erst der linke Ausdruck ausgewertet. Sollte dies schon zu einem klaren Ergebnis führen (true bei "" oder false bei "&&") dann wird der rechte Ausdruck gar nicht mehr beachtet.

          Also dann rücken wir mal gleich mit der ganzen Wahrheit raus.
          && und sind logische Operatoren. Da interessiert es nur ob die verknüpften Werte wahr oder falsch sind, bzw. 0 und nicht 0 oder "" oder "sonstetwas".
          Dadurch wird auch die andere Seite nicht ausgewertet, wenn das Ergebnis schon klar ist. 0 && b kann ja unmöglich wahr werden, wozu dann noch prüfen?

          Da gibt es dann noch die bitweisen Operatoren & ^ << >>
          Die Verknüpfen zwei Werte Bitweise. Anstatt den ganzen Wert als 0 oder 1-Frage anzusehen, wird die Verknüpfung mit jedem Bit der beiden Operanden durchgeführt.
          00010110 &  10010011 = 00010010
          00010110 && 10010011 = 1