Urgus: arrayfehler

der fehler ist "anzahl" ist undefiniert. wieso?

<script type="text/JavaScript">
<!--

function anzahl_fechter() {

var anzahl = prompt("Bitte Zahl eingeben","Anzahl der Fechter");
}

function array() {

var namen = new Array[anzahl];
 return
}
//-->
</script>

  1. Hallo Urgus.

    der fehler ist "anzahl" ist undefiniert. wieso?

    Weil du die Funktion anzahl_fechter() nicht aufrufst.

    Einen schönen Donnerstag noch.

    Gruß, Ashura

  2. der fehler ist "anzahl" ist undefiniert. wieso?

    Weil "anzahl" keine globale Variable sondern eine lokale Variable ist, auf die du nach Verlassen von "anzahl fetcher keinen Zugriff mehr hast.

    var anzahl = -1;
       function anzahl_fechter() {
         var anzahl = prompt("Bitte Zahl eingeben","Anzahl der Fechter");
       }

    function array() {
         var namen = new Array[anzahl];
         return
       }

    sollte tun.

    PS: Eine Funktion "array" zu nennen halte ich auf Grund von Namensähnlichkeiten bedenklich.

    1. sorry,

      var anzahl = -1;
         function anzahl_fechter() {

      anzahl = prompt("Bitte Zahl eingeben","Anzahl der Fechter");

      }

      muss das heissen.

  3. Hallo,

    der fehler ist "anzahl" ist undefiniert. wieso?

    Und der Fehler wird in dieser Zeile gemeldet, nehme ich an:

    var namen = new Array[anzahl];

    Tja... die Variable "anzahl" ist schon definiert. Aber nur lokal innerhalb der Funktion anzahl_fechter(), außerhalb existiert sie nicht. Du musst sie also irgendwie aus dem Kontext der Funktion herausbekommen. Die obenstehende Zeile hat aber auch noch einen syntaktischen Fehler - welchen? ;-)

    Am besten ist es natürlich, wenn man den Wert als Ergebnis der Funktion zurückgibt, etwa so:

    function anzahl_fechter()
    { return (prompt("Bitte Zahl eingeben","Anzahl der Fechter"));
    }

    Jetzt musst du nur noch die Funktion aufrufen und das Funktionsergebnis verwenden. Übrigens hat das Array "namen" in array() dasselbe Problem: Auch "namen" ist lokal und damit außerhalb der Funktion nicht mehr verfügbar.
    Vielleicht versuchst du aber auch zu sehr, jeden einzelnen Schritt in eine separate Funktion zu packen. Merke: Es ist gut, wenn man seinen Programmcode sauber modularisiert, aber man sollte es nicht übertreiben. Anweisungen, die zusammenhängend einen sinnvollen Zweck erfüllen, sollte man auch zusammen lassen, sonst macht man sich wieder sehr viel Arbeit mit der Datenübergabe von einer Funktion an eine andere.

    function array()
    { var namen = new Array[anzahl];
       return
    }

    Der Name dieser Funktion ist sehr ungünstig gewählt. Auch wenn die vordefinierte Javascript-Klasse "Array" einen großen Anfangsbuchstaben hat, sind hier Verwechslungen fast zwingend zu erwarten.

    So long,

    Martin

    --
    Success should be measured not so much by the position that one has reached in life,
    but by the obstacles one has overcome while trying to succeed.