Samuel Vogel: Frage zu promt

Hallo Forum,

Ich benutze Firefox 2.0 und habe eine Frage zu folgendem Script:

  
function new_dir() {  
  
  name = prompt("Bitte geben sie den Namen für das Verzeichnis ein:","");  
  
  if(name != "undefined" && name != "" && name != "null") location.href="./script.php?action=new_dir&name=" + name;  
  
}  

Es soll hier keine weiterleitung erfolgen falls der Anwender auf Abbrechen/Cancel klickt.
name nimmt den wert null an wenn man auf Abbrechen klickt, doch man wir trotzdem weitergeleitet...

Sieht jemand meinen Fehler?

Danke,
Samy

  1. Lieber Samuel,

    name = prompt("Bitte geben sie den Namen für das Verzeichnis ein:","");

    Du hast die Variablen "name" nicht antändig initialisiert, wodurch sie eine globale Variable wird. Das solltest Du aus Gründen der Kompatibilität mit anderen Scripten in Zukunft vermeiden.

    if(name != "undefined" && name != "" && name != "null") location.href="./script.php?action=new_dir&name=" + name;

    Warum nicht so?

    if (name && name != "")  
        location.href = "....";
    

    Erklärung meiner Vereinfachung: Die Werte null, false und "undefined" werden vom if-Zweig als unwahr bewertet.

    Es soll hier keine weiterleitung erfolgen falls der Anwender auf Abbrechen/Cancel klickt.

    Ok. Dann programmiere das doch auch so!

    name nimmt den wert null an wenn man auf Abbrechen klickt, doch man wir trotzdem weitergeleitet...

    Um das genauer nachvollziehen zu können wäre wichtig, wie die Funktion überhaupt aufgerufen wird! Ist es ein onclick-Event oder ein "javascript:...."-Link?

    Meine Glaskugel flüstert mir sirrend ins Ohr, dass da am Ende Deiner Funktion ein "return false" stehen sollte.

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    1. Danke fuer die erklaerung!
      Hat mir geholfen!

      so long,
      Samy

  2. function new_dir() {

    name = prompt("Bitte geben sie den Namen für das Verzeichnis ein:","");

    if(name != "undefined" && name != "" && name != "null") location.href="./script.php?action=new_dir&name=" + name;

    }

      
    Die Bedingung ist falsch. Das reicht aus:  
    if(!name)  
      
    
    > name nimmt den wert null an wenn man auf Abbrechen klickt, doch man wir trotzdem weitergeleitet...  
      
    null ist kein String.  
      
    Struppi.
    
    -- 
    [Javascript ist toll](http://javascript.jstruebig.de/) (Perl auch!)
    
    1. Die Bedingung ist falsch. Das reicht aus:
      if(!name)

      ist natürlich auch falsch, das reicht aus:

      if(name) ...

      Struppi.

      --
      Javascript ist toll (Perl auch!)
  3. Hello,

    if(name != "undefined" && name != "" && name != "null") location.href="./script.php?action=new_dir&name=" + name;

    ^    ^
    Beachte den Unterschied zwischen einem String dessen Inhalt "null" ist und einem null-Zeiger.

    MfG
    Rouven

    --
    -------------------
    There's no such thing as a free lunch  --  Milton Friedman
    1. Hallo Rouven.

      if(name != "undefined" && name != "" && name != "null") location.href="./script.php?action=new_dir&name=" + name;
                                                           ^    ^
      Beachte den Unterschied zwischen einem String dessen Inhalt "null" ist und einem null-Zeiger.

      In JavaScript ist „null“ ein Zeiger?

      Einen schönen Montag noch.

      Gruß, Mathias

      --
      ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
      debian/rules
  4. Tag,

    Ich benutze Firefox 2.0 und habe eine Frage zu folgendem Script:

    function new_dir() {

    name = prompt("Bitte geben sie den Namen für das Verzeichnis ein:","");

    if(name != "undefined" && name != "" && name != "null") location.href="./script.php?action=new_dir&name=" + name;

    }

    
    > Es soll hier keine weiterleitung erfolgen falls der Anwender auf Abbrechen/Cancel klickt.  
    > name nimmt den wert null an wenn man auf Abbrechen klickt, doch man wir trotzdem weitergeleitet...  
      
    Ich glaube, das liegt daran, wie Du die Funktion "new\_dir" aufrufst.  
    Kann es sein, dass Du dafür einen Link mit "onlick" benutzt?  
    Dann müßtest Du das wie folgt machen.  
      
    ~~~html
      
    <a href="." onclick="new_dir(); return false;">  
    
    

    Grüße,
    Steffen.

  5. n'abend,

    if(name != "undefined" && name != "" && name != "null") location.href="./script.php?action=new_dir&name=" + name;

      
    da hast du aber was falsch verstanden ;)  
      
    ~~~javascript
    if( typeof varname == 'undefined' )  
      alert( 'Die Variable "varname" gibt es nicht.');  
      
    if( varname == '' )  
      alert( 'Die Variable "varname" enthält einen leeren String');  
      
    if( varname == NULL )  
      alert( 'Die Variable "varname" ist NULL');  
      
    if( !varname )  
      alert( 'Die Variable "varname" gibt es nicht, oder ist die Zahl 0, oder ist der Boolean false, oder ist ein leerer String, oder ist NULL.');  
      
    /*  
     * angemerkt werden möchte hier noch, dass (string)"0" nicht nach (int)0  
     * evaluiert, und dementsprechend also nicht 0, nicht NULL und kein leerer String ist.  
     * wenn also eine Zahl erwartet wird, sicherheitshalber mittels parseInt / parseDouble casten, wenn man mit if( !bla ) arbeiten will  
     */  
    
    

    weiterhin schönen abend...

    --
    Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
    sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
    1. Hi,

      if( varname == NULL )

      Error: NULL is not defined
      Source File: javascript:alert(NULL)
      Line: 1

      JavaScript ist case-sensitive.

      Cheatah

      --
      X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
      X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
      X-Will-Answer-Email: No
      X-Please-Search-Archive-First: Absolutely Yes
      1. n'abend,

        Error: NULL is not defined
        Source File: javascript:alert(NULL)
        Line: 1

        JavaScript ist case-sensitive.

        *g* macht der Gewohnheit undso™.

        weiterhin schönen abend...

        --
        Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
        sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
        1. Hi,

          *g* macht der Gewohnheit undso™.

          PHP oder SQL? ;-)

          Cheatah

          --
          X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
          X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
          X-Will-Answer-Email: No
          X-Please-Search-Archive-First: Absolutely Yes
          1. n'abend,

            PHP oder SQL? ;-)

            und oder JAVA... Meine Konvention sieht Konstanzen als ALL_UPPERCASE vor. Zudem wird NULL in dem Kontext irgendwie als Konstante angesehen, auch wenn es rein technisch vermutlich keine ist (sondern eher ein Bestandteil der Sprache / Keyword / wie auch immer man das nennen mag)

            und ja, ich stolpere da immer wieder drüber, NULLs in Javascript... das hat sich noch nicht eingebrannt.

            weiterhin schönen abend...

            --
            Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
            sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
            1. Hi,

              PHP oder SQL? ;-)
              und oder JAVA...

              dort wird "null" aber klein geschrieben, oder stehe ich gerade auf dem Schlauch?

              Meine Konvention sieht Konstanzen als ALL_UPPERCASE vor.

              Du hast aber nicht wirklich ein static final Object NULL = null in Deinem Code, oder? :-)

              und ja, ich stolpere da immer wieder drüber, NULLs in Javascript... das hat sich noch nicht eingebrannt.

              Dabei hat JavaScript sogar etwas noch nichts-igeres als null, nämlich undefined :-)

              Cheatah

              --
              X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
              X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
              X-Will-Answer-Email: No
              X-Please-Search-Archive-First: Absolutely Yes
              1. n'abend,

                Du hast aber nicht wirklich ein static final Object NULL = null in Deinem Code, oder? :-)

                natürlich nicht ;)

                Dabei hat JavaScript sogar etwas noch nichts-igeres als null, nämlich undefined :-)

                was ich aber auch nicht unbedingt toll finde.

                if( obj == null )

                weiterhin schönen abend...

                --
                Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
                sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
                1. Hi,

                  Dabei hat JavaScript sogar etwas noch nichts-igeres als null, nämlich undefined :-)
                  was ich aber auch nicht unbedingt toll finde.

                  oh, es ist schon recht sinnbehaftet, wenn man es zu nutzen weiß. Beispiel Funktionsaufruf mit optionalen Parametern: "undefined" liefert den Default-Wert, "null" kann als "false" interpretiert werden.

                  Cheatah

                  --
                  X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                  X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                  X-Will-Answer-Email: No
                  X-Please-Search-Archive-First: Absolutely Yes