Arthur Dent: Anzeige bzw. "onClick" funktioniert nicht

Hallo,

ich erstelle mit JS 2 Tabellen. Diese dienen lediglich als Buttons und haben daher nur ein <td> mit einer onClick-Methode.

// Tabelle 1
        document.writeln('<p class="space1">');
        document.writeln('<table width="60%" align=center class="bground" id="tbut" cellspacing="10" cellpadding="0">');
        document.writeln('<tr>');
        document.writeln('<td id="cellb" align=center title="Galerie verlassen" onclick="self.close(); opener.location.href='close.htm'" style="cursor:hand"><p><b> -= Galerie verlassen =- </b></p></td>');
        document.writeln('</tr>');
        document.writeln('</table>');

// Tabelle 2
        document.writeln('<p class="space1">');
        document.writeln('<table width="30%" align=center class="bground" id="tbut" cellspacing="10" cellpadding="0">');
        document.writeln('<tr>');
        document.writeln('<td id="cellb" align=center title="Impressum/Kontakt" onClick="window.open('credits.htm' ,'Credits','width='+w+', height='+h+', left='+l+', top='+t+', menubar=no,location=no,toolbar=no, dependent=yes')" style="cursor:hand"><p><b> -= Impressum =- </b></p></td>');
        document.writeln('</tr>');
        document.writeln('</table>');

Im IE werden beide angezeigt und onClick funktioniert auch. Im Mozilla funktioniert aber nur die erste. Bei obiger Implementierung von Tabelle 2 sehe ich nur ein kleines Kästchen (der Rahmen der Tabelle) und onClick geht auch nicht.
Das Problem hierbei sind wohl die Variablen (w,h,l und t).
 Irgendwie hab ich hier den Überblick über die ',",' usw. verloren.
Ich hab es auch schon mit anderen Anführungszeichen probiert und bei manchen wird die Tabelle sogar dargestellt, aber onClick geht trotzdem nicht.

Vielleicht sieht von euch einer den Fehler und kann mir helfen. Ich sehe nur noch Anführungszeichen und blicke nix mehr :)

Danke im Voraus,
Arthur

  1. Hi,

    document.writeln('<p class="space1">');
            document.writeln('<table [...]

    <p> darf nur Inline-Elemente beinhalten.

    document.writeln('<td id="cellb" [...]
            document.writeln('<td id="cellb" [...]

    Ich hoffe doch sehr, Du schreibst immer nur eine dieser beiden Tabellen raus, oder? Beide dürfen nicht zeitgleich im selben Dokument existieren.

    Im Mozilla funktioniert aber nur die erste.

    Komisch. Ich hätte gewettet, dass die zweite "funktioniert" (was immer der Begriff bedeutet), da ein self.close() zum sofortigen Ende aller Aktionen im aktuellen Fenster führen muss und das opener.location.href somit nicht mehr abgearbeitet werden kann.

    Bei obiger Implementierung von Tabelle 2 sehe ich nur ein kleines Kästchen (der Rahmen der Tabelle)

    Bist Du sicher, dass der umliegende Kontext keine Verantwortung tragen kann?

    Das Problem hierbei sind wohl die Variablen (w,h,l und t).

    Wenn die keinen sinnvollen Inhalt haben: ja. Ansonsten sind die Leerzeichen im entsprechenden Parameter nach wie vor untersagt, was aber ein anderes Problem ist. Wieso machst Du übrigens _ausgerechnet_ das Impressum dergestalt von JavaScript abhängig? Gilt das TDG für Deine Site?

    Irgendwie hab ich hier den Überblick über die ',",' usw. verloren.

    Die sehen für mich gut aus.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi Cheatah,

      document.writeln('<td id="cellb" [...]
              document.writeln('<td id="cellb" [...]

      Ich hoffe doch sehr, Du schreibst immer nur eine dieser beiden Tabellen raus, oder? Beide dürfen nicht zeitgleich im selben Dokument existieren.

      Doch, ehrlich gesagt schon. Wieso? Wo ist da das Problem?

      Im Mozilla funktioniert aber nur die erste.

      Komisch. Ich hätte gewettet, dass die zweite "funktioniert" (was immer der Begriff bedeutet), da ein self.close() zum sofortigen Ende aller Aktionen im aktuellen Fenster führen muss und das opener.location.href somit nicht mehr abgearbeitet werden kann.

      Hm, da hast du eigentlich recht. Ist mir nie aufgefallen, da es ohne Probleme funktioniert (und zwar sowohl im IE als auch im Mozilla)...aber komisch ist das schon.

      Bist Du sicher, dass der umliegende Kontext keine Verantwortung tragen kann?

      Nein, nicht wirklich. Aber ich habe mal Tabelle 1 und einiges andere komplett raus genommen und es funktioniert trotzdem nicht (übrigens, "funktionieren" bedeutet, dass die Tabelle dargestellt wird und die onClick-Methode funktioniert).

      Wenn die keinen sinnvollen Inhalt haben: ja.

      Variablen sind ok (denke ich mal *g).

      Ansonsten sind die Leerzeichen im entsprechenden Parameter nach wie vor untersagt, was aber ein anderes Problem ist.

      Welche Leerzeichen? Die zwischen width="...", und height="..." ?

      Wieso machst Du übrigens _ausgerechnet_ das Impressum dergestalt von JavaScript abhängig? Gilt das TDG für Deine Site?
      TDG gilt nicht.

      Sorry, dass ich dich jetzt mit zig Fragen zutexte, aber du hast bei mir jetzt 'ne Menge Fragen geweckt *g.

      Gruß,
      Arthur

      1. Hallo, Arthur Dent!

        document.writeln('<td id="cellb" [...]
                document.writeln('<td id="cellb" [...]
        Ich hoffe doch sehr, Du schreibst immer nur eine dieser beiden Tabellen raus, oder? Beide dürfen nicht zeitgleich im selben Dokument existieren.
        Doch, ehrlich gesagt schon. Wieso? Wo ist da das Problem?

        Nein, die IDentität muss eineindeutig sein. Jede IDentität gilt nur für ein Element und jedes Element hat nur eine IDentität.
        Es heist getElementById(), nicht getElementsById()
                                                   ^
        Im Unterschied dazu -> getElementsByName() dürfen Namen mehrfach vergeben werden.
                                         ^
        btw.: menubar,location und toolbar sind "by dyfault"=0 oder "no" (bei IE nur, solange noch andere parameter mit angegeben werden), kannst Du dir also sparen.
        http://selfhtml.teamone.de/javascript/objekte/window.htm#open

        freundl. Grüsse aus Berlin, Raik

        PS: sagen Dir "Instructor" oder "Ebeneezer" etwas? Ansonsten vergiss es.

        1. Hallo Raik,

          also "Instructor" oder "Ebeneezer" sagen mir nichts (zumindest nicht, in einem erkennbaren Zusammenhang mit diesem Posting).

          Was die IDs betrifft: dem IE ist das scheinbar egal. Aber ich hab die auch schon komplett rausgelassen und es ging trotzdem nicht.

          Gruß,
          Arthur

          1. Hallo, Arthur Dent!

            also "Instructor" oder "Ebeneezer" sagen mir nichts (zumindest nicht, in einem erkennbaren Zusammenhang mit diesem Posting).

            peacemaker? stuttgart? kubus? wenns jetzt nicht klingelt, bist du nicht der arturdent, den ich kenne.

            Was die IDs betrifft: dem IE ist das scheinbar egal. Aber ich hab die auch schon komplett rausgelassen und es ging trotzdem nicht.

            ohne den restlichen quelltext zu sehen, wird da wohl keiner gross was dazu sagen können. aber bitte als link, nicht hier rein posten.

            freundl. Grüsse aus Berlin, Raik

            1. Hallo nochmal,
              ...also ich bin bin wohl nicht DER Arthur Dent.

              Mit dem restlichen Quelltext ist das so ein Problem, da das ganze nicht online ist (es ist Teil einer Fotogalerie, die von CD gestartet wird -> falls es dich interessiert: http://forum.de.selfhtml.org/archiv/2004/3/75330/#m433840 )

              Deshalb hier eine gekürzte Fassung (ich hoffe, es wird nicht zu unübersichtlich)

              ...
              <script type="text/javascript">
               <!--
               var height = 560;
               var width = 450;
               var top = Math.round((screen.height - height) / 2);
               var left = Math.round((screen.width - width) / 2);

              document.writeln('<img src="../bilder1/bild1.jpg" name="bild1">');
              ...
              document.writeln('<img src="../bilder4/bild1.jpg" name="bild4">');

              function MakeTable() {
                  var w = new Array();
                 var h = new Array();
                 w[1] = document.bild1.width;
               h[1] = document.bild1.height;
                      ...
                 w[4] = document.bild4.width;
                 h[4] = document.bild4.height;

              // Groesse der Thumbnails festlegen ( ~ proportional zur Originalgroesse )
               for ( i=1; i<=4; i++) {
                     if (w[i] > h[i] ) {
                 w[i] = 160;
                 h[i] = 120;
                     }
                       else if (w[i] < h[i] ) {
                 w[i] = 120;
                 h[i] = 160;
                     }
                     else if (w[i] == h[i] ) {
                 w[i] = 160;
                 h[i] = 160;
                     }
                    } // END for

              document.close();
              document.open("text/html");
              document.writeln('<title>Fotogalerie</title>');
              document.writeln('<link rel="stylesheet" type="text/css" href="../_style/styles.css">');

              document.writeln('<body class="rahmen">');
              document.writeln('<h1 align="center">Fotogalerie</h1>');
              document.writeln('<marquee loop="infinite" scrollamount="5" scrolldelay="1">');
              document.writeln('<p>blablabla</p>');
              document.writeln('</marquee>');
              document.writeln(' ');

              // Tabelle fuer Thumbnails erzeugen:
              document.writeln('<table width="90%" class="bground" id="tpix" cellspacing="10" cellpadding="0">');
              document.writeln('<colgroup width="180" span="5">');
              document.writeln('</colgroup>');
               document.writeln('<tr>');
                document.writeln('<td align=right height="160"   style="border:0"><p><b>Galerie 1</b></p></td>');
                document.writeln('<td align=center height="160" style="border:0"><a href="galerie1.htm"><img src="../bilder1/bild1.jpg" width="' + w[1] + '" height="' + h[1] + '"  alt=" -= Zu Galerie 1 =-" border="0" align="center" style="cursor:hand"/></a></td>');
              ...(weitere Tabellenzellen)

              document.writeln('</tr>');
              document.writeln('</table>');

              => aus vorherigem Posting:
              // Tabelle 1
                      document.writeln('<p class="space1">');
                      document.writeln('<table width="60%" align=center class="bground" id="tbut" cellspacing="10" cellpadding="0">');
                      document.writeln('<tr>');
                      document.writeln('<td id="cellb" align=center title="Galerie verlassen" onclick="self.close(); opener.location.href='close.htm'" style="cursor:hand"><p><b> -= Galerie verlassen =- </b></p></td>');
                      document.writeln('</tr>');
                      document.writeln('</table>');

              // Tabelle 2
                      document.writeln('<p class="space1">');
                      document.writeln('<table width="30%" align=center class="bground" id="tbut" cellspacing="10" cellpadding="0">');
                      document.writeln('<tr>');
                      document.writeln('<td id="cellb" align=center title="Impressum/Kontakt" onClick="window.open('credits.htm','Credits','width='+width+',height='+height+',left='+left+',top='+top+',menubar=no,location=no,toolbar=no,dependent=yes')" style="cursor:hand"><p><b> -= Impressum =- </b></p></td>');
                      document.writeln('</tr>');
                      document.writeln('</table>');

              } // END function MakeTable()
              //-->
              </script>

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

              </body>
              </html>

              Nochmal zur Erinnerung: alles bis auf Tabelle 2 wird richtig dargestellt und die hinterlegten Funktion funktionieren auch.

              Nochmal sorry wegen dem Quelltext-Posten, aber es geht nicht anders...

              Gruß,
              Arthur