Enrico: Javascript-Laufschrift über PHP erzeugen

Hallo,

Ich habe Probleme mit einer Laufschrift.

Wenn ich den Code in eine normale HTML-Datei einbinde, funktioniert alles einwandfrei.

Wenn ich den Code allerdings über PHP mit dem echo-Befehl ausgebe, dann wird die laufschrift nicht angezeigt, ich bekomme aber auch keine Warnung oder Fehlermeldung, d.h. ich habe - formal - den Code richtig eingebunden:

Wenn ich mir zur Kontrolle den Quelltext zur Kontrolle anzeigen lasse, dann erscheint der Javascript-Code - meines Erachtens - auch richtig:

echo "<script language='javascript' type='text/javascript'>";
echo "<!--";

echo "var marqueecontents='<font face='Arial'><strong><big>Thank you for visiting <a href='http://dynamicdrive.com'>Dynamic Drive.</a> If you find this script useful, please consider linking to us by <a href='../link.htm'>click here.</a> Enjoy your stay!</big></strong></font>'";

echo "if (document.all)";
echo "document.write('<marquee scrollAmount='3' style='width:100%'>'+marqueecontents+'</marquee>')";

echo "function regenerate()";
echo "{";
echo "window.location.reload()";
echo "}";

echo "function regenerate2()";
echo "{";
echo "if (document.layers)";
echo "{";
echo "setTimeout('window.onresize=regenerate',450)";
echo "intializemarquee()";
echo "}";
echo "}";

echo "function intializemarquee()";
echo "{";
echo "document.cmarquee01.document.cmarquee02.document.write('<nobr>'+marqueecontents+'</nobr>')";
echo "document.cmarquee01.document.cmarquee02.document.close()";
echo "thelength=document.cmarquee01.document.cmarquee02.document.width";
echo "scrollit()";
echo "}";

echo "function scrollit()";
echo "{";
echo "if (document.cmarquee01.document.cmarquee02.left>=thelength*(-1))";
echo "{";
echo "document.cmarquee01.document.cmarquee02.left-=speed";
echo "setTimeout('scrollit()',100)";
echo "}";
echo "else";
echo "{";
echo "document.cmarquee01.document.cmarquee02.left=marqueewidth";
echo "scrollit()";
echo "}";
echo "}";

echo "window.onload=regenerate2";

echo "//-->";
echo "</script>";
echo "<ilayer width='100%' height='100%' name='cmarquee01'>";
echo "<layer name='cmarquee02'></layer>";
echo "</ilayer>";

Die Laufschrift soll, wenn sie funktioniert, die Vorschaubilder unserer Galerie fortlaufend anzeigen.

Was stimmt an meinem Code nicht ?

Vielen Dank im voraus.

Enrico

  1. Hallo,

    echo "var marqueecontents='<font face='Arial'>(...)";

    ^^^             ^^^
    Du verzettelst dich mit den Anführungszeichen;  Wenn der Code den Browser erreicht sieht es so aus:
    var marqueecontents='<font face='Arial'>(...)';
                                       ^^^            ^^^
    Dir fällt sicher auf, dass du in dem mit einfachen Anführungszeichen gekennzeichneten String wieder einfach Anführungszeichen verwendest, und das geht einfach nicht gut.
    Ich lege dir nahe, die Anführungszeichen mit Backsalsh() zu maskieren.

    Gruß,
    Severin

    --
    They that can give up essential liberty to obtain a little temporary safty deserve neither liberty nor safty.
    -- Benjamin Franklin