Thorsten F.: Brett vorm Kopf

Hallo Leute,
folgender Code

<html>
 <head>
  <title>
   Schiffe versenken
  </title>
  <script type="text/javascript">
   var x = 1;
   while(x<11)
   {
    document.writeln('<img src="test'+x+'.gif" id="0-'+x+'" onClick="checkme()" value="+x+">');
    x++;
   }

function checkme()
   {
    var number = document.getElementById("0-'+x+'").value;
    alert(number);
   }
  </script>
 </head>
</html>

Wenn ich dann auf eines der 10 Bilder klicke, dann bekomme ich eine Fehlermeldung:
Objekt erforderlich. ( Zeile mit var number = ..... )

Ich möchte eigentlich eine Zahl ausgegeben haben, je nach dem auf welches Bild ich klicke. Das erste Bild soll mir 1 ausgeben, das fünfte 5 usw.
Was mach ich denn falsch?

  1. var number = document.getElementById("0-'+x+'").value;

    x fällt nicht vom Himmel, sondern dürfte da stehen, wo es im while ausgestiegen ist. value auf dem Bild gibt es sowieso nicht. Übergib x onclick der Methode.

  2. Hallo Leut,

    was soll er denn bei checkme checken (welche Id) er bekommt doch kein "x" übergeben...;

    gruß frankx

    cen

    Hallo Leute,
    folgender Code

    <html>
    <head>
      <title>
       Schiffe versenken
      </title>
      <script type="text/javascript">
       var x = 1;
       while(x<11)
       {
        document.writeln('<img src="test'+x+'.gif" id="0-'+x+'" onClick="checkme()" value="+x+">');
        x++;
       }

    function checkme()
       {
        var number = document.getElementById("0-'+x+'").value;
        alert(number);
       }
      </script>
    </head>
    </html>

    Wenn ich dann auf eines der 10 Bilder klicke, dann bekomme ich eine Fehlermeldung:
    Objekt erforderlich. ( Zeile mit var number = ..... )

    Ich möchte eigentlich eine Zahl ausgegeben haben, je nach dem auf welches Bild ich klicke. Das erste Bild soll mir 1 ausgeben, das fünfte 5 usw.
    Was mach ich denn falsch?

  3. Wenn ich jetzt onClick="checkme(x)" schreibe, wie muss denn dann in etwa die function aussehen?

    Tu mich da grad ein bisl schwer.

    1. hey, muss leider erstmal los,

      mit x übergibst du den parameter, aber den weisst du ja nicht.

      was willst du denn genau dass dann passiert?

      gruß, frankx

  4. hi,

    Was mach ich denn falsch?

    Wie sieht ein gültiger Wert für das id-Attribut in HTML aus?

    document.writeln('<img src="test'+x+'.gif" id="0-'+x+'"

    So jedenfalls nicht.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. hi,

      Was mach ich denn falsch?

      Wie sieht ein gültiger Wert für das id-Attribut in HTML aus?

      document.writeln('<img src="test'+x+'.gif" id="0-'+x+'"

      So jedenfalls nicht.

      gruß,
      wahsaga

      Wieso denn nicht? Ich habe 10 Bilder und die ID soll dann eben bei dem ersten Bild 0-1, bei dem Zweiten 0-2 usw sein.
      Was ist denn daran falsch?

      1. hi,

        Wieso denn nicht? Ich habe 10 Bilder und die ID soll dann eben bei dem ersten Bild 0-1, bei dem Zweiten 0-2 usw sein.
        Was ist denn daran falsch?

        http://de.selfhtml.org/html/referenz/attribute.htm#id_idref_name

        Vielleicht solltest du dich erst mal etwas mehr mit den Grundlagen von HTML beschäftigen, bevor es an Javascript geht.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. hi,

          Wieso denn nicht? Ich habe 10 Bilder und die ID soll dann eben bei dem ersten Bild 0-1, bei dem Zweiten 0-2 usw sein.
          Was ist denn daran falsch?

          http://de.selfhtml.org/html/referenz/attribute.htm#id_idref_name

          Vielleicht solltest du dich erst mal etwas mehr mit den Grundlagen von HTML beschäftigen, bevor es an Javascript geht.

          gruß,
          wahsaga

          Dass da etwas mit der id nicht stimmt, habe ich nach deinem Kommentar auch rausgefunden, denn sobald ich dort einen festen String angebe, dann wird zumindest die checkme() aufgerufen und ich bekomme den alert: 5-1.

          Aber es muss doch möglich sein, 10 Bilder in einer Schleife darzustellen ( mit nem Einzeiler ) und automatisch 10 IDs zu verteilen oder nicht?

          1. hi,

            Aber es muss doch möglich sein, 10 Bilder in einer Schleife darzustellen ( mit nem Einzeiler ) und automatisch 10 IDs zu verteilen oder nicht?

            Na klar - aber es sollten eben _gültige_ IDs sein.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. hi,

              Aber es muss doch möglich sein, 10 Bilder in einer Schleife darzustellen ( mit nem Einzeiler ) und automatisch 10 IDs zu verteilen oder nicht?

              Na klar - aber es sollten eben _gültige_ IDs sein.

              gruß,
              wahsaga

              Ok, bin dann glaube ich einen Schritt weiter, nur wrum ist denn jetzt jedes Feld das feld10?

              <script type="text/javascript">
                 var x=1;
                 while(x<=10)
                 {
                  document.writeln('<img src="test'+x+'.gif" id="test'+x+'"  wert="feld'+x+'" onClick="checkme(x)">');
                  //alert(x);
                  if(x==10)
                   break;
                  else
                   x++;
                 }

              function checkme(number)
                 {
                  alert(x);
                  var id_string = "";
                  if(x==1)
                   id_string = "test1";
                  if(x==2)
                   id_string = "test2";
                  if(x==3)
                   id_string = "test3";
                  if(x==4)
                   id_string = "test4";
                  if(x==5)
                   id_string = "test5";
                  if(x==6)
                   id_string = "test6";
                  if(x==7)
                   id_string = "test7";
                  if(x==8)
                   id_string = "test8";
                  if(x==9)
                   id_string = "test9";
                  if(x==10)
                   id_string = "test10";

              number = document.getElementById(id_string).wert;
                  alert(number);
                 }
                </script>

              Kann man den Code noch vereinfachen, denn wenn ich jetzt zum Beispiel das gleiche mit 500 Feldern machen will, dann wird das ziemlich mühselig.

              1. Habe es bis jetzt so umgeschrieben:

                <script type="text/javascript">
                   var x=1;
                   document.writeln('<p align="center">');
                   while(x<=10)
                   {
                    document.writeln('<img src="test'+x+'.gif" id="test'+x+'"  wert="feld'+x+'" onClick="checkme(x)">');
                    //alert(x);
                    if(x==10)
                    {
                     break;
                    }
                    else
                     x++;
                   }
                   document.writeln('</p>');

                function checkme(feld)
                   {
                    var id_string = "";
                    for (i = 1; i<=10; i++)
                    {
                     if(x==i)
                      id_string = "test"+i;
                    }
                    feldwert = document.getElementById(id_string).wert;
                    alert(feldwert);
                   }

                </script>

                Allerdings bekomme ich immer noch ausschließlich die Meldung:
                "feld10"

                Warum das so ist ist mir klar. Am Ende der Schleife ist x = 10 und damit gut. Das ist ja aber nicht das was ich haben will.
                Kann ich die Variable nach dem Schleifendurchlauf irgendwie zurücksetzen oder so?

                1. Hi,

                  document.writeln('<img src="test'+x+'.gif"

                  beim src-Attribut weißt Du, wie Du den Wert von x in den Attributwert bekommst.

                  id="test'+x+'"

                  beim id-Attribut weißt Du, wie Du den Wert von x in den Attributwert bekommst.

                  wert="feld'+x+'"

                  beim wert-Attribut (das es in HTML gar nicht gibt) weißt Du, wie Du den Wert von x in den Attributwert bekommst.

                  onClick="checkme(x)">');

                  Hier hat dann plötzlich der Alzheimer zugeschlagen ...

                  cu,
                  Andreas

                  --
                  Warum nennt sich Andreas hier MudGuard?
                  Schreinerei Waechter
                  Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                  1. Alles klar. Besten Dank. Man man man, war das eine schwere Geburt.

                    THX