Dumpfbacke: Memory Spiel in Homepage einbetten; Fehler onLoad="init();" ?

Bekomme mein Online Memory Spiel auf der Website mit eigenen Bildern einfach nicht zum laufen (JavaScript)... Deckblatt weicht den Bildern nicht...

Liegt es eventuell an onLoad="init();" im body? Dort habe ich bereits ein onload drin (für die Buttons der Navigationsleiste), nur wie sage ich jetzt, dass das andere onLoad="init();" sich nur auf die Tabelle mit dem Memory beziehen soll und nicht auf meine Navigationsleiste, wo es derzeit die Bilder anzeigt, sobald ich auf das Memory klicke?

Habe von Java eigentlich keine Ahnung, sorry - aber bitte um Hilfe!

  1. Bekomme mein Online Memory Spiel auf der Website mit eigenen Bildern einfach nicht zum laufen (JavaScript)... Deckblatt weicht den Bildern nicht...

    Ich hoffe du nennst es nicht so: http://www.ulrich-willmes.de/memory-abmahnung.html

    Liegt es eventuell an onLoad="init();" im body? Dort habe ich bereits ein onload drin (für die Buttons der Navigationsleiste), nur wie sage ich jetzt, dass das andere onLoad="init();" sich nur auf die Tabelle mit dem Memory beziehen soll und nicht auf meine Navigationsleiste,

    Wenn du zwei Funktionen hast die den gleichen Namen haben, hast du ein Problem. Dann ist die erste nicht mehr ausführbar, da du sie mit der zweiten Funktion überschrieben hast.

    Habe von Java eigentlich keine Ahnung, sorry

    Ich auch nicht, aber warum sagst du das hier?

    Struppi.

    1. Hallo Struppi! Danke für den Hinweis mit dem Memory-Namensrecht!

      Aber zum eigentlichen Problem:
      Hast du eine Idee, wie ich denn ansonsten onLoad="init();" bestimme, so dass 2 Funktionen möglich sind?
      Kann ich es nicht einfach auch trennen, die Funktion soll dort gelten und die hier? Oder gibt es eine Alternative? Oder kann es daran gar nicht liegen?

      Das ich keine Ahnung von Java habe, habe ich gesagt, damit Ihr wisst, dass es auch ein blöder Fehler sein könnte, an dem es hakt, auf den ich einfach nicht komme.

      1. Hast du eine Idee, wie ich denn ansonsten onLoad="init();" bestimme, so dass 2 Funktionen möglich sind?

        Das ist kein Problem onload="funktion_1(); funktion_2()";

        Kann ich es nicht einfach auch trennen, die Funktion soll dort gelten und die hier? Oder gibt es eine Alternative? Oder kann es daran gar nicht liegen?

        1. nein, JS kennt keinen Namespace
        2. Ja du kannst mit Objekten arbeiten
        3. Nach deiner Beshcreibung liegt es daran.

        Das ich keine Ahnung von Java habe, habe ich gesagt, damit Ihr wisst, dass es auch ein blöder Fehler sein könnte, an dem es hakt, auf den ich einfach nicht komme.

        Ja gut, wir reden hier über Javascript, das hat mit Java nichts zu tun.

        Struppi.

        1. Hallo zusammen! Ich bekomme es einfach nicht hin!!! Füge die ganze Seite jetzt einfach hier rein, vielleicht ist ja jemand (vielleicht Struppi?) so nett, und kann mir ganz plakativ (vielleicht in der Zeile ... ergänzen?) weiterhelfen? Das onLoad="init();" für das "Memory" im <body> fehlt im Moment, weil ich ja nicht weiß wohin und wie, so dass das Spiel auch funktioniert. Besten Dank im Voraus!

          <html><head>

          <script language="JavaScript">

          var noi = 32; var prefix = "i"; var endung = ".gif"; var deckblatt = "logo.jpg" var is = new Array(noi/2); var f = new Array(noi); visible = -1; pos = -1; pos2 = -1; cs = 0;

          win = new Array(noi/2); moves = 0; schum = 0; pair = true;

          function init () {

          load_images();   init_game();

          }

          function load_images() {

          for (n=0;n<(noi/2);n++) {     is[n] = new Image();     is[n].src = prefix + n + endung;   } }

          function init_game() {

          moves = 0;   pair = true;   visible = -1;   pos = -1;   pos2 = -1;   cs = 0;   win = new Array(noi/2);

          for (i=0;i<(noi/2);i++) {     win[i] = false;   }

          for (k=0;k<noi;k++) {     document.images[k].src = deckblatt;

          }

          for (j=0;j<noi;j++) {     f[j] = -1;

          }

          for (m=0;m<noi;m++)

          spos = 0;     steps = 0;     p = zufall(noi);     while (p>steps) {

          spos++;

          if (spos==noi) {  //Turn-around

          spos = spos - noi;

          }

          if (f[spos] == -1) {

          steps++;

          }

          }

          f[spos] = m;

          }

          for (m=0;m<noi;m++)     f[m] = f[m] % (noi/2);

          } }

          function zufall(n) {

          return Math.ceil(Math.random()*(n-1));

          } }

          function bestimmen(i){

          aussuchen (i); if (document.images[i].src != is[(f[i])].src){ document.images[i].src = is[(f[i])].src; aussuchen (i); document.images[i].src = deckblatt;

          } }

          function aussuchen(i) {

          if (document.images[i].src == is[0].src){ win.document.write("<img src='i0.gif'></td>");

          }

          if (document.images[i].src == is[1].src){ win.document.write("<img src='i1.gif'></td>");

          }

          ... }

          if (document.images[i].src == is[15].src){ win.document.write("<img src='i15.gif'></td>");

          } }

          var win=window.open("","","height=570,width=950,left=30,top=50"); win.document.open("text/html"); win.document.write("<HTML><HEAD><TITLE>Gedächtnisspiel</TITLE></HEAD>"); win.document.write("<BODY onclick='self.close()' onblur='self.close()'>");

          win.document.write("<table><tr><td width='75'>&nbsp;</td><td width='900'>");     win.document.write("<p align='center'><br><b><font size='4'></font></b></p></td>");     win.document.write("<td width='75'>&nbsp;</td></tr><tr><td>&nbsp;</td><td>&nbsp;</td>");     win.document.write("<td>&nbsp;</td></tr></table>");

          win.document.write("<div align='center'>");

          win.document.write("<table border='0' cellpadding='0' cellspacing='0'>");

          win.document.write("<tr>");

          win.document.write("<td style='width:84px; height:84px'>"); bestimmen (00);

          win.document.write("<td style='width:84px; height:84px'>"); bestimmen (01);

          ... win.document.write("<td style='width:84px; height:84px'>");bestimmen (07);

          win.document.write("</tr>");

          win.document.write("<tr>");

          win.document.write("<td style='width:84px; height:84px'>");bestimmen (08);

          ...

          win.document.write("<td style='width:84px; height:84px'); bestimmen (15);

          win.document.write("</tr>");

          win.document.write("<tr>");

          win.document.write("<td style='width:84px; height:84px'>"); bestimmen (16);

          ... win.document.write("<td style='width:84px; height:84px'>"); bestimmen (31);

          win.document.write("</tr>");

          win.document.write("</table>");

          win.document.write("</div>");

          win.document.write("</BODY></HTML>");

          win.document.close();

          }       }     }

          else {

          if ((i != pos2) && (i != pos)) {

          document.images[i].src = is[(f[i])].src;         moves++;         pos2 = i;         cs = 0;         pair = false;

          if (f[i] == visible) {

          win[visible] = true;           goal = true;           pair = true;           for (n=0;n<noi/2;n++) {

          if (win[n] == false) {

          goal = false;

          }           }

          if (goal == true)             {             alert("Geschafft! \n\nSie haben " + moves + "-mal geraten.");             }         }         else {         }       }     }   } }

          // -->

          </script>

          </head>

          <body bgcolor="FDF6E4" marginheight="0" marginwidth="0" leftmargin="0" topmargin="0" onLoad="MM_preloadImages('a.gif','b.gif','c.gif','d.gif','e.gif','f.gif','g.gif','h.gif','j.gif','k.gif')">

          <div align="left">

          <table>   <tr>     <td colspan="6"><img src="a.gif" width="800" height="96"></td>  </tr>  <tr>

          <td valign="top" width="133"><a href="x1.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image1','','b.gif',1)"><img src="Bilder/design_neu_3_image_ready_03.gif"name="Image1"></a><br>             <a href="x2.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image2','','bilder_mp/design_neu_3_image_ready_05.gif',1)"><img src="Bilder/design_neu_3_image_ready_05.gif"name="Image2"></a><br> <a href="x3.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image3','','bilder_mp/design_neu_3_image_ready_06.gif',1)"><img src="Bilder/design_neu_3_image_ready_06.gif" name="Image3"></a><br> <a href="x4.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image4','','bilder_mp/design_neu_3_image_ready_07.gif',1)"><img src="Bilder/design_neu_3_image_ready_07.gif" name="Image4"></a><br> <a href="x5.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image5','','bilder_mp/design_neu_3_image_ready_08.gif',1)"><img src="Bilder/design_neu_3_image_ready_08.gif" name="Image5"></a><br> <a href="x6.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image6','','bilder_mp/design_neu_3_image_ready_09.gif',1)"><img src="Bilder/design_neu_3_image_ready_09.gif" name="Image6"></a><br> <a href="x7.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image7','','bilder_mp/design_neu_3_image_ready_10.gif',1)"><img src="Bilder/design_neu_3_image_ready_10.gif" width="130" height="27" border="0" name="Image7"></a><br> <a href="x8.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image8','','bilder_mp/design_neu_3_image_ready_11.gif',1)"><img src="Bilder/design_neu_3_image_ready_11.gif" name="Image8"></a><br> <a href="x9.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image9','','bilder_mp/design_neu_3_image_ready_12.gif',1)"><img src="Bilder/design_neu_3_image_ready_12.gif" name="Image9"></a><br> <a href="x10.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image10','','bilder_mp/design_neu_3_image_ready_13.gif',1)"><img src="Bilder/design_neu_3_image_ready_13.gif" name="Image10"></a>     </td>

          <td width="950">       <p><font face="Arial, Helvetica, sans-serif" size="2" color="#666666"><b><img src="spacer20d.gif" width="316" height="28"><br>           Ged&auml;chnisspiel</p>

              <table width="65%" border="0" cellspacing="3" cellpadding="1" height="692">
          

          <tr>             <td><font face="Arial, Helvetica, sans-serif"><b>Spiel mal wieder...</b></font></td>             <td width="34%">&nbsp;</td>           </tr>           <tr>             <td colspan="2" height="132">               <p>Text</p>

          <table border="0" cellpadding="0" style="border-collapse: collapse" bordercolor="#111111" width="700">                 <tr>                   <td align="center" colspan="8">&nbsp;</td>                 </tr>                 <tr>                   <td  height="84" width="84" align="center"><a href="javascript:aufdecken(00)">                     <img src="logo.jpg"></a>                   </td> <td><a href="javascript:aufdecken(01)"> <img src="logo.jpg"></a>                   </td> <td><a href="javascript:aufdecken(02)"> <img src="logo.jpg"></a>                   </td> <td><a href="javascript:aufdecken(03)"> <img src="logo.jpg"></a>                   </td> <td><a href="javascript:aufdecken(04)"> <img src="logo.jpg"></a>                   </td> <td ><a href="javascript:aufdecken(05)"> <img src="logo.jpg" ></a>                   </td> <td ><a href="javascript:aufdecken(06)"> <img src="logo.jpg"></a>                   </td> <td><a href="javascript:aufdecken(07)"> <img src="logo.jpg"></a>                   </td>                 </tr>

          <tr> <td ><a href="javascript:aufdecken(08)"> <img src="logo.jpg"></a>                   </td> <td><a href="javascript:aufdecken(09)"> <img src="logo.jpg"></a>                   </td> <td><a href="javascript:aufdecken(10)">                     <img src="logo.jpg"></a>                   </td>                   <td><a href="javascript:aufdecken(11)">                     <img src="logo.jpg"></a>                   </td>                   <td><a href="javascript:aufdecken(12)">                     <img src="logo.jpg"></a>                   </td>                   <td><a href="javascript:aufdecken(13)">                     <img src="logo.jpg"></a>                   </td>                   <td><a href="javascript:aufdecken(14)">                     <img src="logo.jpg"></a>                   </td>                   <td><a href="javascript:aufdecken(15)">                     <img src="logo.jpg"></a>                   </td>                 </tr>                 <tr> <td><a href="javascript:aufdecken(16)"> <img src="logo.jpg"></a>                   </td> <td><a href="javascript:aufdecken(17)"> <img src="logo.jpg"></a>                   </td>                   <td height="84" width="84" align="center"><a href="javascript:aufdecken(18)">                     <img src="logo.jpg" border="0" align="bottom" width="83" height="83"></a>                   </td> <td><a href="javascript:aufdecken(19)"> <img src="logo.jpg"></a>                   </td>                   <td height="84" width="84" align="center"><a href="javascript:aufdecken(20)">                     <img src="logo.jpg"></a>                   </td> <td><a href="javascript:aufdecken(21)"> <img src="logo.jpg"></a>                   </td> <td><a href="javascript:aufdecken(22)"> <img src="logo.jpg"></a>                   </td> <td><a href="javascript:aufdecken(23)"> <img src="logo.jpg"></a>                   </td>                 </tr>                 <tr> <td><a href="javascript:aufdecken(24)"> <img src="logo.jpg"></a>                   </td> <td><a href="javascript:aufdecken(25)"> <img src="logo.jpg"></a>                   </td> <td><a href="javascript:aufdecken(26)">                     <img src="logo.jpg"></a>                   </td> <td><a href="javascript:aufdecken(27)"> <img src="logo.jpg"></a>                   </td> <td><a href="javascript:aufdecken(28)"> <img src="logo.jpg"></a>                   </td> <td><a href="javascript:aufdecken(29)"> <img src="logo.jpg"></a>                   </td> <td><a href="javascript:aufdecken(30)"> <img src="logo.jpg"></a>                   </td> <td><a href="javascript:aufdecken(31)"> <img src="logo.jpg"></a>                   </td>                 </tr>

          </table>             </td>           </tr>

          <tr>             <td colspan="2">               <div align="left"></div>             </td>           </tr>

          </table>

          </table></div>

          </body>

          1. Liebe Dumpfbacke,

            <html><head>

            <script language="JavaScript">

            var noi = 32;
            var prefix = "i";
            var endung = ".gif";
            var deckblatt = "logo.jpg"

            mir kommt das kalte Grausen!!

            Übrigens kann man ein Memory-Spielchen wesentlich einfacher gestalten.

            Liebe Grüße,

            Felix Riesterer.

            --
            ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
            1. Lieber Felix,

              das mag sein! Dann bitte ich um Erklärung, was dran so verkehrt ist.

              Das von Dir verlinkte Memory-Quiz löst bei mir allerdings Grauen aus... sorry, aber das gefällt mir nicht und funktionieren tuts ja auch nicht.

              Alle meckern nur, aber keiner sagt was besser ist!

              1. Liebe Dumpfbacke,

                Dann bitte ich um Erklärung, was dran so verkehrt ist.

                Dein HTML-Dokument ist voll von JavaScript-bezogenem Code. Das ist nicht gut. Trenne alles, was mit JavaScript zu tun hat von dem Inhalt Deiner Seite.

                Das von Dir verlinkte Memory-Quiz löst bei mir allerdings Grauen aus... sorry, aber das gefällt mir nicht

                Das bleibt Dir überlassen.

                und funktionieren tuts ja auch nicht.

                Das ist eine unqualifizierte Aussage, denn "funktioniert nicht" funktioniert nicht.

                Alle meckern nur, aber keiner sagt was besser ist!

                Es ist besser, JavaScript-Code "unobtrusive" zu konzipieren. In meinem Falle wird ein externes JavaScript-File eingebunden, das sich im Dokument das holt, was es braucht, um dann damit das zu tun, wozu es programmiert wurde. Auf diese Weise trenne ich JavaScript (Verhalten meiner Seite) von HTML (Struktur meiner Seite). Gleiches gilt übrigens auch für CSS (Aussehen/Präsentation meiner Seite).

                Bei Deiner Seite steht alles im HTML-Dokument. Und auch noch in einer völlig veralteten Art und Weise (nicht zuletzt auch ein Grund, warum Du hier um Hilfe fragen musst, anstatt dass alles "funzt"), und dazu noch vollkommen von Dreamweaver bis zur Unkenntlichkeit zugemüllt. Und bevor Du fragst, wir hatten gerade erst vor ein paar Tagen fast dieselbe Diskussion hier. Lies einmal dort nach, was ich an Deiner Seite so alles nicht in Ordnung finde. Dann können wir gerne weiter darüber diskutieren, was Du tatsächlich besser machen kannst.

                Und bitte erläutere mir genau, was auf meiner Seite wie "nicht funktioniert"!

                Liebe Grüße,

                Felix Riesterer.

                --
                ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
              2. Hallo Dumpfbacke!

                Das von Dir verlinkte Memory-Quiz löst bei mir allerdings Grauen aus... sorry, aber das gefällt mir nicht und funktionieren tuts ja auch nicht.

                Das irritierende an Felix' Spiel ist, dass entgegen der gewöhnlichen Memory-Spiele nicht paarweise die Bilder aufgedeckt werden müssen, sondern so: 2 Bilder, ein Begriff.

                Das sollte Felix IMHO dazu schreiben (oder ich hab's überlesen).

                Zu Deinem Problem hat Dir Struppi schon gesagt, dass Du im onload-Attribut so viele Funktionen notieren kannst, wie Du willst:

                <body onload="func1();func2();...funcn();">

                Viele Grüße aus Frankfurt/Main,
                Patrick

                --
                _ - jenseits vom delirium - _

                   Diblom   [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
                J'ai 10 ans! | Achtung Agentur! | Nichts ist unmöglich? Doch! | Heute schon gegökt?
                1. Lieber Patrick,

                  Das irritierende an Felix' Spiel ist, dass entgegen der gewöhnlichen Memory-Spiele nicht paarweise die Bilder aufgedeckt werden müssen, sondern so: 2 Bilder, ein Begriff.

                  Das sollte Felix IMHO dazu schreiben (oder ich hab's überlesen).

                  mein Memory-Mechanismus kann beliebige Tupel als Sets handhaben. Als Vorlage dient eine Tabelle, wobei alle Zellen einer Zeile ein Set ergeben. Der Inhalt eines Memory-Feldes besteht aus dem (HTML-)Inhalt der ursprünglichen Tabellenzelle (z.B. auch Bilder). Wenn die Tabelle vier Spalten hat, dann bestehen die Sets eben aus Quartetten - wenn nur zwei Spalten existieren, dann bestehen die Sets wie gewohnt aus Paaren.

                  Ich betrachte diesen Umstand als eine Stärke meines Mechanismusses. Gerade wenn dieses Quiz im Fremdsprachenkontext als Lernergänzung eingesetzt werden soll, ist es besonders sinnvoll, nicht nur Paare, sondern Triplets oder gar Quartette zu haben...

                  Liebe Grüße,

                  Felix Riesterer.

                  --
                  ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
                  1. Hallo Felix!

                    Ich betrachte diesen Umstand als eine Stärke meines Mechanismusses. Gerade wenn dieses Quiz im Fremdsprachenkontext als Lernergänzung eingesetzt werden soll, ist es besonders sinnvoll, nicht nur Paare, sondern Triplets oder gar Quartette zu haben...

                    Unstrittig. Nur ein Hinweis für alle die anderen, dass hier keine Paare gesucht werden, wäre dennoch hilfreich - nur meine Meinung!

                    Viele Grüße aus Frankfurt/Main,
                    Patrick

                    --
                    _ - jenseits vom delirium - _

                       Diblom   [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
                    J'ai 10 ans! | Achtung Agentur! | Nichts ist unmöglich? Doch! | Heute schon gegökt?
      2. Aber zum eigentlichen Problem:
        Hast du eine Idee, wie ich denn ansonsten onLoad="init();" bestimme, so dass 2 Funktionen möglich sind?
        Kann ich es nicht einfach auch trennen, die Funktion soll dort gelten und die hier? Oder gibt es eine Alternative? Oder kann es daran gar nicht liegen?

        Natürlich kann man das trennen, JavaScript kennt Gültigkeitsbereiche (innerhalb von Funktionen beispielsweise), aber das hilft dir ja nicht direkt, du willst die Funktionen ja im onload-Eventhandler haben. Alternativen gibt es mehrere:

        • Du benennst sie um, z.B. in init1 und init2.
        • Du kapselst beide Scripte komplett in eigene Objekte und machst die Initialisierungsfunktionen zu Objekt-Eigenschaften.
        • Du setzt das Ganze objektorientiert um und erstellst einfach zwei Objekte, eigentlich gibt es dabei natürlich das gleiche Problem, was Namen angeht, aber es ist ja eher unwahrscheinlich, dass beide Konstruktoren gleich heißen.
          Die Auflistung erhebt keinen Anspruch auf Vollständigkeit.

        Schau dir bei den JavaScript-Artikeln am Besten Organisation von JavaScripten an.

        Das ich keine Ahnung von Java habe, habe ich gesagt, damit Ihr wisst, dass es auch ein blöder Fehler sein könnte, an dem es hakt, auf den ich einfach nicht komme.

        Java ist nicht JavaScript!

        --
        Reden ist Silber, Schweigen ist Gold, meine Ausführungen sind Platin.
        Self-Code: sh:( ch:? rl:( br:> n4:( ie:{ mo:) va:) de:> zu:} fl:| ss:| ls:~ js:|
      3. Hallo :)

        Das ich keine Ahnung von Java habe, habe ich gesagt, damit Ihr wisst, dass es auch ein blöder Fehler sein könnte, an dem es hakt, auf den ich einfach nicht komme.

        Versuche es doch mal mit Javascript.
        Damit kennt sich auch Struppi bestens aus.

        mfg
        cygnus

        --
        Die Sache mit der Angel und dem  ><o(((°>  hat immer einen Haken ...