Anthony DiNozzo: wenn-dann-funktion mit input kombinieren - bloß wie?

Hai,
hab mal wieder ein Problem bei dem ich irgendwie zu kompliziert denke:

ich möchte aus dem:
http://de.selfhtml.org/javascript/sprache/bedingt.htm#if_else@title=http://de.selfhtml.org/javascript/sprache/bedingt.htm#if_else

und aus dem:
http://de.selfhtml.org/javascript/beispiele/formulareingaben.htm@title=http://de.selfhtml.org/javascript/beispiele/formulareingaben.htm
(oder einem ähnlichen input)

eins machen.
Mein Vorschlag dazu:

  
function Geheim () {  
  var Passwort = "123";  
  }  
  if (document.Formular.Passwort.value != "123") {  
    alert("Falsches Passwort!"  
  } else {  
    location.href = "2.htm";  
  }  
}
<p align="left" style="margin-top:65px;margin-left:65px;"><b>Benutzername:</b>  
  
<form name="Geheim" method="post">  
  
<input type="text" size="40" name="Passwort">  
  
<input type="submit" value="Absenden">  
  
</form>

kann mir irgendeiner helfen ich dreh echt nur noch durch

Mfg
Thony

  1. Hi,

    kann mir irgendeiner helfen ich dreh echt nur noch durch

    Das muss wohl der Grund sein, warum du noch nicht mal ansatzweise eine vernünftige Problembeschreibung lieferst.

    Mein Vorschlag dazu:

    function Geheim () {
      var Passwort = "123";
      }
      if (document.Formular.Passwort.value != "123") {
        alert("Falsches Passwort!"
      } else {
        location.href = "2.htm";
      }
    }

      
    Mein Vorschlag dazu: Schau in die JavaScript-Fehlerkonsole eines vernünftigen testbrowsers (wie bspw. Firefox) - die wird dir dann schon sagen, was sie daran für falsch hält.  
      
    MfG ChrisB  
      
    
    -- 
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    
    1. Hallo,

      function Geheim () {

      var Passwort = "123";
        }
        if (document.Formular.Passwort.value != "123") {
          alert("Falsches Passwort!"
        } else {
          location.href = "2.htm";
        }
      }

      
      >   
      > Mein Vorschlag dazu: Schau in die JavaScript-Fehlerkonsole eines vernünftigen testbrowsers (wie bspw. Firefox) - die wird dir dann schon sagen, was sie daran für falsch hält.  
        
      wahrscheinlich gar nichts - denn die Funktion Geheim() wird ja nie aufgerufen. Und selbst wenn: Das fehlende Semikolon nach der alert-Anweisung ist eine erlaubte Schlamperei.  
      Aber sollte es statt "Geheim" nicht eher "Geh heim" heißen?  
        
      @Tony: Ein Formular ist fehl am Platz, wenn du die Eingaben nicht versenden willst. Ein Eingabefeld und ein Button (ohne umschließendes Formular) würden völlig genügen. Die Funktion, die die Eingabe überprüft, muss natürlich auch irgendwann aufgerufen werden - etwa bei Klick auf den Button.  
        
      Und von "geheim" kann nun wirklich keine Rede sein, wenn die geforderte Eingabe für jeden lesbar im Quellcode steht.  
        
      So long,  
       Martin  
      
      -- 
      Finanztipp:  
      Leihen Sie sich Geld von einem Pessimisten.  
      Er rechnet sowieso nicht damit, dass er es zurückbekommt.  
        
      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      
      1. Hi,

        function Geheim () {

        var Passwort = "123";
          }
          if (document.Formular.Passwort.value != "123") {
            alert("Falsches Passwort!"
          } else {
            location.href = "2.htm";
          }
        }

        
        > >   
        > > Mein Vorschlag dazu: Schau in die JavaScript-Fehlerkonsole eines vernünftigen testbrowsers (wie bspw. Firefox) - die wird dir dann schon sagen, was sie daran für falsch hält.  
        >   
        > wahrscheinlich gar nichts - denn die Funktion Geheim() wird ja nie aufgerufen.  
          
        Doch, schon beim parsen des Codes wird sie das Stolpern über die Syntaxfehler protokollieren.  
          
        
        > Und selbst wenn: Das fehlende Semikolon nach der alert-Anweisung ist eine erlaubte Schlamperei.  
          
        Die fehlende runde Klammer aber nicht.  
        Und die überzählige geschweifte am Ende auch nicht. (Überzählig wird sie durch die unverschämte Vordrängelei eines ihrer Geschwister, das meinte schon vor dem If wäre sein ihm zustehender und angestammter Platz.)  
          
        MfG ChrisB  
          
        
        -- 
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        
        1. Hallo,

          Mein Vorschlag dazu: Schau in die JavaScript-Fehlerkonsole eines vernünftigen testbrowsers (wie bspw. Firefox) - die wird dir dann schon sagen, was sie daran für falsch hält.
          wahrscheinlich gar nichts - denn die Funktion Geheim() wird ja nie aufgerufen.
          Doch, schon beim parsen des Codes wird sie das Stolpern über die Syntaxfehler protokollieren.

          jetzt, wo du es sagst, seh ich die Fehler auch ...

          Und selbst wenn: Das fehlende Semikolon nach der alert-Anweisung ist eine erlaubte Schlamperei.
          Die fehlende runde Klammer aber nicht.

          Stimmt.

          Und die überzählige geschweifte am Ende auch nicht. (Überzählig wird sie durch die unverschämte Vordrängelei eines ihrer Geschwister, das meinte schon vor dem If wäre sein ihm zustehender und angestammter Platz.)

          Ja, muss ich im ersten Ansatz auch übersehen haben.

          Ciao,
           Martin

          --
          Lieber eine Stumme im Bett, als eine Taube auf dem Dach.
          Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
          1. wäre folgendes dann ein ansatz oder habe ich da immer noch was übersehen?
            weil bei mir funktioniert es trotz fehlerloser fehlerkonsole immer noch nicht?!

            function Geheim () {  
              var Passwort = "123";  
              }  
              if (document.Formular.Passwort.value != "123") {  
                alert("Falsches Passwort!") }  
              else {  
                location.href = "2.htm"}
            
            <input type="text" size="40" name="Passwort">  
              
            <input type="button" class="button" value="Log In" onclick="Geheim()">
            

            Danke
            mfg Thony

            1. Hi,

              wäre folgendes dann ein ansatz oder habe ich da immer noch was übersehen?
              weil bei mir funktioniert es trotz fehlerloser fehlerkonsole immer noch nicht?!

              function Geheim () {

              var Passwort = "123";
                }

                
              Was soll denn deiner Meinung nach an dieser Funktion großartig "funktionieren"?  
              Außer eine lokale Variable zu deklarieren, macht sie nichts.  
                
              MfG ChrisB  
                
              
              -- 
              RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
              
              1. Was soll denn deiner Meinung nach an dieser Funktion großartig "funktionieren"?

                ich will das man das passwort "123" eingibt und (nur) dann auf eine nächste seite gelangt

                1. @@Anthony DiNozzo:

                  nuqneH

                  ich will das man das passwort "123" eingibt und (nur) dann auf eine nächste seite gelangt

                  Du willst die if-Abfrage samt else-Zweig innerhalb deiner Funktion Geheim haben? Dann überprüfe nochmal die Klammersetzung!

                  Die Funktion verdient den Namen Geheim nicht, und "123" ist kein Passwort. Du könntest auch "Gib 123 ein!" neben das Eingabefeld schreiben, die Sicherheit wäre dieselbe: null.

                  Die clientseitige Spielerei taugt zur Übung für dich; aber nicht dazu, wirklich Inhalte vor Unbefugten zu schützen. Da muss eine serverseitige Lösung her.

                  Qapla'

                  --
                  Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                  (Mark Twain)
                  1. zitat1882@title=kein Passwort]. Du könntest auch "Gib 123 ein!" neben das Eingabefeld schreiben, die Sicherheit wäre dieselbe: null.

                    Die clientseitige Spielerei taugt zur Übung für dich; aber nicht dazu, wirklich Inhalte vor Unbefugten zu schützen. Da muss eine serverseitige Lösung her.

                    das is mir auch bewusst ich wollt das als kleine spielerei machen um mal was anderes auszuprobieren geht ja aber anscheinend grad voll in die hose

                    trotzdem danke

            2. Hallo Anthony,

              wäre folgendes dann ein ansatz

              nein. Passwortschutz per Javascript ist nie ein Ansatz. Das ist wie der Zettel mit dem Passwort am Monitor oder die Zahlenkombination "1111" und nur die "1" ist abgegriffen.

              oder habe ich da immer noch was übersehen?

              ja, einige Fehler.

              weil bei mir funktioniert es trotz fehlerloser fehlerkonsole immer noch nicht?!

              die Fehlerkonsole müsste aber etwas anzeigen.

              function Geheim () {

              var Passwort = "123";

              diese Variable wird nie genutzt.

              }

              hier ist die Funktion Geheim schon zu ende. Die Klammer muss weg.

              if (document.Formular.Passwort.value != "123") {

              da du kein Formular mehr hast, kannst du auch nicht mehr mit ...Formular... arbeiten. Gib dem Input eine ID und benutze document.getElementById.

              alert("Falsches Passwort!") }
                else {
                  location.href = "2.htm"}

              hier muss jetzt die Klammer hin. die die Funktion Geheim beendet.  
                
              
              >   
              >   
              > ~~~html
              
              <input type="text" size="40" name="Passwort">  
              benötigt eine id.  
                
              
              >   
              > <input type="button" class="button" value="Log In" onclick="Geheim()">
              
              

              Gruß, Jürgen

              1. Mahlzeit JürgenB,

                if (document.Formular.Passwort.value != "123") {
                da du kein Formular mehr hast, kannst du auch nicht mehr mit ...Formular... arbeiten. Gib dem Input eine ID und benutze document.getElementById.

                Warum? Eine Mischung aus <http://de.selfhtml.org/javascript/objekte/forms.htm#allgemeines@title=Schema 1> und <http://de.selfhtml.org/javascript/objekte/elements.htm#allgemeines@title=Schema 4> funktioniert tadellos.

                [code lang=html]<input type="text" size="40" name="Passwort">
                benötigt eine id.

                Nein.

                Ansonsten hast Du natürlich vollkommen recht.

                MfG,
                EKKi

                --
                sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                1. Hallo EKKi,

                  Warum?

                  weil ich ein Freund der getElement(s)By-Methoden bin.

                  Eine Mischung aus <http://de.selfhtml.org/javascript/objekte/forms.htm#allgemeines@title=Schema 1> und <http://de.selfhtml.org/javascript/objekte/elements.htm#allgemeines@title=Schema 4> funktioniert tadellos.

                  auch ohne Formular? Ich sehe da nur document.forms... .

                  Gruß, Jürgen

                  1. Mahlzeit JürgenB,

                    Warum?
                    weil ich ein Freund der getElement(s)By-Methoden bin.

                    OK - aber warum dann nicht http://de.selfhtml.org/javascript/objekte/document.htm#get_elements_by_name@title=getElementsByName()? Dann muss man dem Element nicht extra ein Attribut verpassen, das es sonst gar nicht benötigt ...

                    auch ohne Formular? Ich sehe da nur document.forms... .

                    *Eingabe*-Elemente ohne ein Formular haben IMHO *prinzipiell* nahezu gar keinen Sinn.

                    MfG,
                    EKKi

                    --
                    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                    1. Hallo,

                      auch ohne Formular? Ich sehe da nur document.forms... .
                      *Eingabe*-Elemente ohne ein Formular haben IMHO *prinzipiell* nahezu gar keinen Sinn.

                      das sehe ich anders. Ein Formular in HTML hat zwei Aspekte:
                       1. Es vermittelt die Semantik: "Hier sollen Benutzereingaben stattfinden".
                       2. Es stellt die Funktionalität bereit, diese Eingaben als GET- oder POST-Request
                          an einen Server zu senden und als Antwort ein neues Dokument entgegenzunehmen.

                      Wenn ich die Eingaben aber nicht an einen Server versenden, sondern clientseitig mit Javascript auswerten will, widerstrebt es mir, ein Formular zu verwenden und dessen Kernaufgabe dann zu unterdrücken - ebenso wie ich keinen Link verwenden würde, um eine Javascript-Funktion innerhalb der angezeigten Seite auszulösen.

                      Eingabeelemente ohne umschließendes Formular lassen sich mit Javascript natürlich immer noch mit getElementsByName() ansprechen, wenn man ihnen nicht auch ein ID-Attribut geben möchte.

                      So long,
                       Martin

                      --
                      Das Leben ist lebensgefährlich und endet meistens tödlich.
                      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                    2. Hallo EKKi,

                      *Eingabe*-Elemente ohne ein Formular haben IMHO *prinzipiell* nahezu gar keinen Sinn.

                      wenn man "IMHO *prinzipiell*" als Ausnahme ansieht, stimme ich dir zu.

                      Gruß, Jürgen

                    3. Hi!

                      OK - aber warum dann nicht http://de.selfhtml.org/javascript/objekte/document.htm#get_elements_by_name@title=getElementsByName()? Dann muss man dem Element nicht extra ein Attribut verpassen, das es sonst gar nicht benötigt ...

                      Ein Input-Element benötigt gar keine Attribute. Anders gesagt: keines seiner Attribute ist ein Pflichtelement. Minimal könnte man also mit getElementsByTagName() drauf zugreifen. Allerdings sollte man dann stets im Auge behalten, dass bei hinzukommenden input-Elementen sich die Nummerierung ändert und Anpassungen im Code erforderlich sein können. Mit einem id-Attribut muss man lediglich sicherstellen, es nicht noch einmal zu vergeben. Vorhandene Referenzen auf das Element können unverändert bestehen bleiben.

                      auch ohne Formular? Ich sehe da nur document.forms... .
                      *Eingabe*-Elemente ohne ein Formular haben IMHO *prinzipiell* nahezu gar keinen Sinn.

                      Eben beklagst du dich noch über nicht benötigte Attribute und hier plädierst du für ein komplettes, nicht benötigtes Element? In der Strict-Variante wird sogar noch ein zweites Element nötig, weil input dann nicht direkt in form stehen darf.

                      Lo!

                      1. Mahlzeit dedlfix,

                        Eben beklagst du dich noch über nicht benötigte Attribute und hier plädierst du für ein komplettes, nicht benötigtes Element?

                        Es ging mir lediglich darum, dass man nicht unbedingt jedem Element, auf das man in Javascript in irgendeiner Form zugreifen will, eine ID verpassen *muss* (wie es leider fälschlicherweise viel zu oft behauptet bzw. "empfohlen" wird) - sondern dass der Zugriff auch auf andere, von Situation zu Situation mehr oder weniger sinnvollere Methoden möglich ist.

                        Deswegen habe ich auf JürgenBs ...

                        <input type="text" size="40" name="Passwort">
                        benötigt eine id.

                        ... entsprechend reagiert: es *benötigt* nämlich keine.

                        MfG,
                        EKKi

                        --
                        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                        1. Hallo EKKi,

                          Deswegen habe ich auf JürgenBs ...

                          <input type="text" size="40" name="Passwort">
                          benötigt eine id.

                          ... entsprechend reagiert: es *benötigt* nämlich keine.

                          also ich werde eine ID immer einem Namen vorziehen, wenn es wie in diesem Fall eindeutig sein soll. getElemetsByName oder getElemetsByTagName verwende ich nur, wenn ich eine Collection erwarte und die Elemente sinnvoll gruppiert sind.

                          Gruß, Jürgen