Baesler: Array wert bei onClick übergeben!

Hallöchen,

ich bastel mir gerade eine Gallerie, die als solches auch schon recht gut funktioniert.
1. Thumbnails werden angezeigt wie vorgesehen.
2. Verweis zur originalgrafik geht auch.

Jetzt möchte ich aber ein onClick Ereignis abfangen und prüfen , wie groß die Originalgrafik ist, um diese eventuell (nur zur Ansicht) zu verkleinern.(soll in den iframe passen)

hier mal kurz der Quellcode:

function PHPVar()
{
 Str = "<?= $wert1; ?>";  //$wert1 ist eine PHP Variable
 jsarray1 = Str.split("?");
 Str2 = "<?=$link1; ?>";  //$Link1 ist auch eine PHP Variable
 jsarray2 = Str2.split("?");
 document.write("<table>");
 document.write("<tr>");

a = 0;
 document.write("<br>");

for(i=0; i<jsarray1.length; i++ )
 {
 b = i;
 document.write("<td><a href=""+jsarray2[i]+"" onClick="javascript:bild(jsarray2[i])"><img src=""+jsarray1[i]+"" >");
  a++;
  if(a == 4)
  {
   document.write("</tr>");
   document.write("<tr>");
   a = 0;
  }

}

Die Funktion bild() ist jetzt nicht hier aufgeführt, da diese erstmal nur ein alert(wert) ausgibt.
Leider werden die einzelnen Arraywerte scheinbar nicht korrekt übergeben. Als Ergebnis des alert() kommt "undifined".
Was kann das sein?

  1. hi,

    Die Funktion bild() ist jetzt nicht hier aufgeführt, da diese erstmal nur ein alert(wert) ausgibt.
    Leider werden die einzelnen Arraywerte scheinbar nicht korrekt übergeben. Als Ergebnis des alert() kommt "undifined".

    Mal kontrolliert, _was_ du eigentlich ins Dokument geschrieben hast? (Z.B. über ein alert der innerHTML-Eigenschaft des umgebenden Elementes nach dem Fertigladen der Seite.)

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Mal kontrolliert, _was_ du eigentlich ins Dokument geschrieben hast? (Z.B. über ein alert der innerHTML-Eigenschaft des umgebenden Elementes nach dem Fertigladen der Seite.)

      gruß,
      wahsaga

      »»
      Ja, das habe ich mit jedem einzelnen Bild durchprobiert.
      Die Werte als solche sind korrekt, denn sonst(so denke ich) würden die Links zu den Originalgrafiken nicht funktionieren.

      1. hi,

        Ja, das habe ich mit jedem einzelnen Bild durchprobiert.

        Ergebnis?

        Die Werte als solche sind korrekt, denn sonst(so denke ich) würden die Links zu den Originalgrafiken nicht funktionieren.

        Ich hatte nicht gefragt, was du denkst oder wovon du träumst, sondern was du _kontrolliert_ hast.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Ich hatte nicht gefragt, was du denkst oder wovon du träumst, sondern was du _kontrolliert_ hast.

          gruß,
          wahsaga

          »»

          Ich habe bei der Erstellung der Tabelle und dem Füllen jeder Zelle mit einem Bild ein alert() ausgeben lassen mit Bildnamen und Pfad zur Originalgrafik.
          Diese Werte waren alle in Ordnung.
          Da ich ja den Wert, den ich beim onClick übergeben will auch als <a href habe, müsste dieser ja identisch sein. Als Link wird der einzelne Array wert korrekt gesetzt. Nur wird er leider nicht an die Funktion korrekt übergeben.

          wenn ich wie folgt vorgehe:

          onClick=""+bild(jsarray2[i])+""

          wird automatisch für jede Grafik ein Alert augegeben, bei dem dann der Wert auch korrrekt übergeben wird.
          Aber ich möchte ja nun nicht für jedes einzelne Bild ein Alert ausführen lassen.

          1. Also, wenn ich die ganze Zeile (<td> ect) im alert ausgebe, werden der a href wert korrekt angezeigt, der img src wert auch.
            Nur der wert, den ich bei onClick übergeben möchte (bild(jsarray2[i]))
            wird genau so angezeigt wie folgt:

            onClick="bild(jsarray2[i])"

            wobei in den klammern eigentlich der Wert des Arrays stehen sollte.

            1. hi,

              Nur der wert, den ich bei onClick übergeben möchte (bild(jsarray2[i]))
              wird genau so angezeigt wie folgt:

              onClick="bild(jsarray2[i])"

              Natürlich, weil du ja auch genau das hingeschrieben hast.

              wobei in den klammern eigentlich der Wert des Arrays stehen sollte.

              Beim href-Attribut hast du es anders geschrieben - was schliesst du also daraus?

              gruß,
              wahsaga

              --
              /voodoo.css:
              #GeorgeWBush { position:absolute; bottom:-6ft; }
              1. Beim href-Attribut hast du es anders geschrieben - was schliesst du also daraus?

                gruß,
                wahsaga

                Ist dass denn so richtig?

                onClick="bild(""+jsarray2[i]+"")"

      2. Da ich mich mit JS so gut wie gar nicht auskenne, könnte es sein, dass ich Dich falsch verstanden habe?
        Wenn ja, wäre ich Dir sehr verbunden, wenn Du mir das etwas einfachererklären könntest.

        Danke.  (smyle)

        1. hi,

          Da ich mich mit JS so gut wie gar nicht auskenne, könnte es sein, dass ich Dich falsch verstanden habe?

          Wäre immer hin möglich ...

          Wenn ja, wäre ich Dir sehr verbunden, wenn Du mir das etwas einfachererklären könntest.

          Gerne, wenn du sagst, _was_ du nicht verstanden hast.

          Ich bat dich, über eine Kontrollausgabe der innerHTML-Eigenschaft eines umgebenden Elementes - meinetwegen auch document.body - zu kontrollieren, was wirklich ins Dokument geschrieben wurde.

          Da das ein bisschen umfangreich werden könnte, kannst du alternativ auch document.write durch alert ersetzen - und kontrollierst dann damit erst mal die Ausgaben, ob die wirklich das enthalten, was du beabsichtigst.

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
          1. Da das ein bisschen umfangreich werden könnte, kannst du alternativ auch document.write durch alert ersetzen - und kontrollierst dann damit erst mal die Ausgaben, ob die wirklich das enthalten, was du beabsichtigst.

            gruß,
            wahsaga

            »»

            Auch über document.write() habe ich es getestet, wobei das Ergebnis auch so war wie es sein sollte.
            Also die Werte waren richtig.

  2. Jetzt möchte ich aber ein onClick Ereignis abfangen und prüfen , wie groß die Originalgrafik ist, um diese eventuell (nur zur Ansicht) zu verkleinern.(soll in den iframe passen)

    Was heißt überprüft? Womit?

    hier mal kurz der Quellcode:

    function PHPVar()
    {
    Str = "<?= $wert1; ?>";  //$wert1 ist eine PHP Variable

    Schön, nur hilft uns dein PHP code nicht bei einem JS Problem.
    Die Variabel str ist global, was du auf jeden Fall vermeiden solltest, genau wie weiter unter

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

    Ab hier wird das Dokument komplett überschrieben, wenn du die Funktion erst nach dem laden aufrufst, Wissen wir aber nicht.

    document.write("<br>");

    Dieses Element ist hier fehl am Platz.

    for(i=0; i<jsarray1.length; i++ )

    Globale Schleifenvariabeln kann stundenlanges Fehlersuchen bedeuten.

    {
    b = i;

    Wozu das?

    document.write("<td><a href=""+jsarray2[i]+"" onClick="javascript:bild(jsarray2[i])"><img src=""+jsarray1[i]+"" >");

    "javascript:" ist hier ein überflüssiges Label, woher hast du das?
    Jetzt ist die Frage was hier tatsächlich ausgegeben wird.

    a++;
      if(a == 4)

    du kannst hier schön mit dem Modulo Operator arbeiten.
    if( a % 4)
    http://de.selfhtml.org/javascript/sprache/operatoren.htm#berechnung

    Leider werden die einzelnen Arraywerte scheinbar nicht korrekt übergeben. Als Ergebnis des alert() kommt "undifined".

    Ein alert() gibt immer undefined aus, im FF wird es gar nicht erst ausgeführt.

    Was kann das sein?

    läßt sich so nicht sagen.

    Struppi.

    --
    Javascript ist toll (Perl auch!)