Tanja: 3 mögliche antworten

grüß euch!
wäre schön wenn mir jemand weiterhelfen könnte.

in einem iframe ist ein eingabefeld. je nach antwort soll dann entweder die eine oder die andere seite im frame erscheinen. mit dem folgenden script funktioniert das auch tadellos, solange es sich nur um zwei mögliche antworten und entsprechend zwei mögliche neue seiten handelt.
nun habe ich aber DREI antwortmöglichkeiten und zu jeder soll eine andere seite erscheinen.
was muss ich tun.

so sieht das bis jetzt aus, und wie gesagt: es funktioniert auch gut.

<script type="text/javascript">
<!--
function Antwort() {
 var Ergebnis = (document.kleid.Eingabe.value == "3") ? parent.kleidung.location.href("kleidung_3.htm") : parent.kleidung.location.href("kleidung_1.htm");
 }
 // -->
</script>

<body>

<div align="center">
  <center>
  <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="650" id="AutoNumber1" height="100%">
    <tr>
      <td width="100%">
      <p align="center">Wenn ich in der Wüste lebe, wähle ich Kleidung Nummer</p>
  <form name="kleid">
   <p align="center">
   <input type="text" name="Eingabe" size="5">
   <input type="button" value="OK" onClick="Antwort()"> </p>
            </p>
  </form>
  </td>
    </tr>
  </table>
  </center>
</div>

</body>

  1. Hallo Tanja,

    da bietet sich

    if-else/switch

    an. In deinem Fall ginge es sogar noch einfacher:

    parent.kleidung.location.href="kleidung_"+document.kleid.Eingabe.value+".htm";

    hier musst du aber sicherstellen, das der so erzeugte Name auch gültig ist. Evtl. wäre ein select besser. In den Options könnte dann der Dateiname stehen.

    Gruß, Jürgen

    1. danke jürgen,
      ich hab es ausprobiert und es funktioniert super!
      wäre nie auf die simple idee gekommen.

      lg
      tanja

  2. Hi Tanja,

    in einem iframe ist ein eingabefeld. je nach antwort soll dann entweder die eine oder die andere seite im frame erscheinen. mit dem folgenden script funktioniert das auch tadellos, solange es sich nur um zwei mögliche antworten und entsprechend zwei mögliche neue seiten handelt.
    nun habe ich aber DREI antwortmöglichkeiten und zu jeder soll eine andere seite erscheinen.

    var Ergebnis = (document.kleid.Eingabe.value == "3") ?
    parent.kleidung.location.href("kleidung_3.htm") :
    parent.kleidung.location.href("kleidung_1.htm");

    so ganz nebenbei: du hast nicht wirklich ahnung von javascript, oder? das mit dem "Von allen hier Teilnehmenden werden HTML-Grundkenntnisse erwartet" gilt, wenn du zu javascript eine frage hast, auch dafür.
    das "bedingung ? dann : sonst;" heißt, dass wenn die bedingung (in dem fall ob das eingabefeld 3 ist) wahr ist, wird "dann" ausgeführt, ansonsten "sonst".
    das geht natürlich mit drei werten nicht so einfach.

    zu deiner frage: wie wäre es mit einem dropdownmenü (oder auch radionbuttons) statt einem input-feld? dann können die leute nix auswählen, was es nicht gibt. guck dir doch mal das an: http://de.selfhtml.org/javascript/beispiele/verweisliste.htm (du musst es natürlich noch ein bisschen anpassen, vor allem wegen dem iframe)

    Gruß, Marian

    1. hallo marian!

      du hast recht damit, dass ich am anfang steh. einige dinge krieg ich ganz gut hin, von anderen hab ich keine ahnung. nur - wie soll ich lernen, wenn ich niemanden fragen darf, weil ich zu wenig weiß?

      es ist mir natürlich klar gewesen, dass bei "bedingung ? dann : sonst;" nur zwei möglichkeiten bestehen. aber es hätte ja sein können, dass man auch hier, wie bei if - else verschachteln kann.
      die lösung, die jürgen vorgeschlagen hat, war bestechend einfach und hat super funktioniert.

      grummel nicht nicht mit mir, ich bemüh mich ja eh! ;-))

      lg tanja

      Hi Tanja,

      in einem iframe ist ein eingabefeld. je nach antwort soll dann entweder die eine oder die andere seite im frame erscheinen. mit dem folgenden script funktioniert das auch tadellos, solange es sich nur um zwei mögliche antworten und entsprechend zwei mögliche neue seiten handelt.
      nun habe ich aber DREI antwortmöglichkeiten und zu jeder soll eine andere seite erscheinen.

      var Ergebnis = (document.kleid.Eingabe.value == "3") ?
      parent.kleidung.location.href("kleidung_3.htm") :
      parent.kleidung.location.href("kleidung_1.htm");
      so ganz nebenbei: du hast nicht wirklich ahnung von javascript, oder? das mit dem "Von allen hier Teilnehmenden werden HTML-Grundkenntnisse erwartet" gilt, wenn du zu javascript eine frage hast, auch dafür.
      das "bedingung ? dann : sonst;" heißt, dass wenn die bedingung (in dem fall ob das eingabefeld 3 ist) wahr ist, wird "dann" ausgeführt, ansonsten "sonst".
      das geht natürlich mit drei werten nicht so einfach.

      zu deiner frage: wie wäre es mit einem dropdownmenü (oder auch radionbuttons) statt einem input-feld? dann können die leute nix auswählen, was es nicht gibt. guck dir doch mal das an: http://de.selfhtml.org/javascript/beispiele/verweisliste.htm (du musst es natürlich noch ein bisschen anpassen, vor allem wegen dem iframe)

      Gruß, Marian

      1. Hi,

        es ist mir natürlich klar gewesen, dass bei "bedingung ? dann : sonst;" nur zwei möglichkeiten bestehen. aber es hätte ja sein können, dass man auch hier, wie bei if - else verschachteln kann.

        Ja, natürlich kann man das: (bedingung1)?(Ja1):((bedingung2)?(Nein1/Ja2):(Nein1/Nein2));

        Gruß, Cybaer

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
        1. Tag Cybaer.

          Ja, natürlich kann man das: (bedingung1)?(Ja1):((bedingung2)?(Nein1/Ja2):(Nein1/Nein2));

          Nur mal interessehalber nachgefragt:
          Diese komplexe Art der Shorthand-Schreibweise ist ja (m.E.) im Vergleich zu einer if-else-Anweisung nicht einfach zu lesen. Worin besteht nun der Vorteil? Geschwindigkeit? Bequemlichkeit? Würde mich jedenfalls mal interessieren, da ich aus Gründen der Lesbarkeit meines Codes bisher um "Bedingung ? Wahr : Falsch" immer einen Bogen gemacht habe.

          Siechfred

          --
          Früh übt sich ... (74kB)
          Der schwierigste Blick ist immer der über den Tellerrand -- man glaubt gar nicht, wie hoch so ein Tellerrand sein kann.
          1. Hi,

            Worin besteht nun der Vorteil? Geschwindigkeit? Bequemlichkeit?

            Bequemlichkeit und Kompaktheit.

            Würde mich jedenfalls mal interessieren, da ich aus Gründen der Lesbarkeit meines Codes bisher um "Bedingung ? Wahr : Falsch" immer einen Bogen gemacht habe.

            Ich benutze es vor allen Dingen, wenn es um alternative Stringteile geht, bzw. wo sich nachträglich auch nichts mehr groß ändert. Z.B.:

            alert("Dieser Browser beherrscht modernes DHTML "+((!document.getElementById)?"gar nicht":((!document.styleSheets)?"teilweise":"gut"))+"!");

            Gibt den passenden Satz aus (z.B. bei NS4/Opera8/Moz).

            Der bei if...else notwendige zusätzliche Aufwand ist in einem solchen Fall IMHO schlicht unnötig ...

            ... und verstehen tue ich es auch später noch - zumal wenn man, wie hier, zusätzliche Klammern setzt (was zumindest bei PHP ohnehin oft zwingend sein muß). Ist ja letzlich nur eine andere grammatikalische Syntax für die gleiche Aktion.

            Gruß, Cybaer

            --
            Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
      2. es ist mir natürlich klar gewesen, dass bei "bedingung ? dann : sonst;" nur zwei möglichkeiten bestehen. aber es hätte ja sein können, dass man auch hier, wie bei if - else verschachteln kann.

        Kann man auch. du hast zwar mittlerweile eine wesntlich elegenater MEthode als das was du ursprünglich versucht hast.

        Aber die Lösung mit ? : hätte so ausgesehen:

        parent.kleidung.location.href =  document.kleid.Eingabe.value == 3 ?
        "kleidung_3.htm" : document.kleid.Eingabe.value == 2 ?
        "kleidung_2.htm" :
        "kleidung_1.htm"
        ;

        Die Bedingung ? : ist etwas ander als eine normale if Bedingung, üblicherweise wird sie für die Zuweisung einer Variabeln o.ä. verwendet (es ist aber durchaus erlaub auch ganze Blöcke da rein zu packen).

        und location.href ist keine Funktion, wei du nach der Lektüre von selhtml ja schon weißt.

        Struppi.

        1. Danke Struppi,
          so hatte ich mir das vorgestellt und sogar selber ausprobiert. Wie ich jetzt vergleiche, stelle ich fest, dass ich eigentlich nur das zweite Fragezeichen vergessen hatte.
          Die Methode hat den Vorteil, dass bei anderen Antworten als den gesuchten auch eine vernünftige Lösung möglich ist.

          Gruß
          Tanja

          Aber die Lösung mit ? : hätte so ausgesehen:

          parent.kleidung.location.href =  document.kleid.Eingabe.value == 3 ?
          "kleidung_3.htm" : document.kleid.Eingabe.value == 2 ?
          "kleidung_2.htm" :
          "kleidung_1.htm"
          ;

          Die Bedingung ? : ist etwas ander als eine normale if Bedingung, üblicherweise wird sie für die Zuweisung einer Variabeln o.ä. verwendet (es ist aber durchaus erlaub auch ganze Blöcke da rein zu packen).

          und location.href ist keine Funktion, wei du nach der Lektüre von selhtml ja schon weißt.

          Struppi.

          1. Hallo Tanja

            Danke Struppi,
            so hatte ich mir das vorgestellt und sogar selber ausprobiert. Wie ich jetzt vergleiche, stelle ich fest, dass ich eigentlich nur das zweite Fragezeichen vergessen hatte.

            Naja, und du überall die nicht existiernde Funktion href() aufgerufen hast.

            Die Methode hat den Vorteil, dass bei anderen Antworten als den gesuchten auch eine vernünftige Lösung möglich ist.

            Das ist immer möglich, wenn du den Wert überprüfst, was man grundsätzlich tun sollte.

            var nr = document.kleid.Eingabe.value || 1;
            i(nr < 1 || nr > 3) nr = 1;

            parent.kleidung.location.href = "kleidung_" + nr + ".htm";

            Struppi.