Alex: Problem bei onLoad mit folgendem script...

Hier erstmal der code (auschnitte)vom script+html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/JavaScript">
var pruef = new Array();

function showpic(id){
   alert(pruef);

}

function start(){
  level=document.chooselevel.level.options[document.chooselevel.level.selectedIndex].value;
  for (i=0;i<=(level*level)-1;i++){
 pruef[i]='leer';
  }
  //auf=0;
  alert(pruef);

}
</script>

</head>
<body onLoad="start()">

<table width="100%" height="100%"><tr><td align="center">
<table border="0" cellspacing="0">
<form name="chooselevel" method="get" onSubmit="start()">
<tr><td>
<? if(!isset($level)) $level=4; ?>
<select name="level" size="1">
   <option value="4" <? if($level==4) echo "selected"; ?> >leicht (Standard)</option>
   <option value="8" <? if($level==8) echo "selected"; ?> >mittel</option>
   <option value="12" <? if($level==12) echo "selected"; ?> >schwer</option>
</select></td></tr>
<tr><td colspan="4" align="center"><input name="submit" type="submit" value="neues Spiel"></td></tr>
</form>
</table>
<table>
<?
error_reporting(E_ALL);
    $id=0;

$zeile=$spalte=$level-1;
 $height=400/$level;
 $width=600/$level;
 for ($i=0;$i<=$zeile;$i++){
    echo "<tr>";
      for ($j=0;$j<=$spalte;$j++){
     echo "<td><a href="javascript:showpic($id)" onFocus="this.blur()"><img src="images/deckblatt.jpg" width="$width" height="$height" name='pic$id' border="0"></a></td>";
        $id++;
   }
    echo "</tr>";

}
?>
</table>

</td></tr></table>
</body>
</html>

nun das problem:
ich möchte mir in der funktion showpic() das array pruef anzeigen lassen. wenn ich nun die funktion start() bei onload=start() einfüge seh ich das array, aber wenn das onload fehlt, dann seh ich nur ein leeres array. wieso ist das so? ich möchte nämlich nur bei klick auf den button die funktion starten.
wie bekomme ich ausserdem den wert von pruef aus der funktion start()in die funktion showpic? die funktion start() darf aber nur einmal aufgerufen werden beim klick.

danke schon mal für paar tipps.

  1. nun das problem:
    ich möchte mir in der funktion showpic() das array pruef anzeigen lassen. wenn ich nun die funktion start() bei onload=start() einfüge seh ich das array, aber wenn das onload fehlt, dann seh ich nur ein leeres array. wieso ist das so? ich möchte nämlich nur bei klick auf den button die funktion starten.

    Weil du das Array pruef erst in der Funktion start() initialisierst.

    wie bekomme ich ausserdem den wert von pruef aus der funktion start()in die funktion showpic? die funktion start() darf aber nur einmal aufgerufen werden beim klick.

    Wo ist das Problem?

    Struppi.

    1. Wo ist das Problem?

      Wie ich den anfangswert vom array pruef aus der function start()übergebe an die function showpic()? in der function showpic() soll ja dann die vorbelegung schrittweise durch andere werte ersetzt werden

      1. hi,

        Wo ist das Problem?
        Wie ich den anfangswert vom array pruef aus der function start()übergebe an die function showpic()? in der function showpic() soll ja dann die vorbelegung schrittweise durch andere werte ersetzt werden

        wenn dir die übergabe von parametern beim aufruf von funktionen nicht geläufig ist, sieh dir das js-kapitel zu funktionen an:
        http://selfhtml.teamone.de/javascript/sprache/funktionen.htm

        gruss,
        wahsaga

        1. Ich habe mir das kapitel angesehen.

          vielleicht steh ic hauch grad bissl auf der leitung, aber ich müsste den wert ja dann so übergeben:

          function start(){
           pruef=new Array();
             for(i=0;i<=15;i++){
                pruef[i]="leer";

          }
           return pruef;
          }

          function showpic(id){

          wert=start();

          }

          wenn ich nun immer die function showpic aufruf, dann wird ja das array immer wieder von neuem mit "leer" belegt unddas will ich nicht.

          wenn was falsch ist, hast du da ne lösung?

          1. wenn was falsch ist, hast du da ne lösung?

            Wieso willst dfu pruef unbedingt in einer Funktion belegen?
            Du machst ja nichts weiter als einen Anfangswert einzutragen das gheht auch außerhalb einer Funktion.

            Struppi.

            1. Ich möcht es in ne funktion machen, weil ich aus nem formular noch einen wert mit übergeben möchte, und dieser wert ist ja vor dem submit noch nicht vorhanden, und ich bekomm dann immer ne fehlermeldung

              1. Ich möcht es in ne funktion machen, weil ich aus nem formular noch einen wert mit übergeben möchte, und dieser wert ist ja vor dem submit noch nicht vorhanden, und ich bekomm dann immer ne fehlermeldung

                $level ist schon wenn du die Seite aufrufst vorhanden. Irgendwie versteh ich deine Logik nicht.

                Du brauchst eine Funktion, die dein Array initialisiert, diese rufst du einmal ganz am Anfang (mit dem Wert $level auf oder wenn sich das Select feld änder (dazu gibt es den Event onchange), dann ist pruef belegt, da pruef ein globaler Wert ist steht er der Funktion show Pic zu Verfügung.

                Struppi.

          2. Vielleicht solltest du erst mal bischen was über Javascript lesen,
            der Umgang mit Funktionen gehört eigentlich zu den Grundkenntnissen.

            for(i=0;i<=15;i++){
                  pruef[i]="leer";
               }
             return pruef;

            welches "pruef" soll die Funktion den zurück geben??
            es gibt
            pruef[0]
            pruef[2]
            pruef[3]
            pruef[4]
            ..
            pruef[15]

            function showpic(id){

            was bringt dir ID wenn du es nicht nutzt?? du übergibst einen Wert verwendestr uhn dann aber nicht

            Ich hab zwar glaub ich immer noch nicht ganz den sinn deiner hin und her aufruferei verstanden, aber wenn du den Wert von start() nach showpic() übergeben willst ruf doch in start die funktion showpic() auf.

            function start(){
             pruef=new Array();
               for(i=0;i<=15;i++){
                  pruef[i]="leer";
                  showpic(pruef[i]);
               }

            }

            function showpic(pruef){

            alert(pruef);

            }

            start();

            Der Aufruf von start gibt die 16 Werte zurück, die das Array gespeichert hat.

            1. return pruef;
              welches "pruef" soll die Funktion den zurück geben??

              Prinzipiell ist das ok, denn die Funktion gibt das ganze Array zurück.

              Struppi.

            2. for(i=0;i<=15;i++){
                    pruef[i]="leer";
                 }
               return pruef;
              welches "pruef" soll die Funktion den zurück geben??

              ich hab jetz alles gelöst und die funktionen waren jaauch nur auschnitte. aber auf die frage welches pruef zurückgegeben wird, das geht so. ich weise ner variablen die funktion zu

              function bla(){
               for(i=0;i<=15;i++){
                     pruef[i]="leer";
                  }
                return pruef;

              }
              x=bla()
              function bla2(){
                 hier habe ich die werte wenn ich mir x[0] bis... ausgeben lasse.
              }
              is alles bissl aus dem zusammenhamg gerissen jetzt aber habe das so verwendet

              1. is alles bissl aus dem zusammenhamg gerissen jetzt aber habe das so verwendet

                Ja dann