+ Antworten
Ergebnis 1 bis 12 von 12

Thema: alert / document.write / usw. Es wird nichts ausgeführt!

  1. #1
    TP-Insider Sand*mann hilft, wo's geht Sand*mann hilft, wo's geht Avatar von Sand*mann
    Registriert seit
    Nov 2005
    Ort
    Berlin
    Beiträge
    587

    alert / document.write / usw. Es wird nichts ausgeführt!

    Hallo zusammen!

    Ich habe eine PHP-Datei in der ich einen PHP-Array an Javascript übergebe.
    Nach der Übergabe möchte ich überprüfen, ob wirklich das Richtige angekommen ist. Der Code dazu sieht so aus:

    PHP-Code:
    echo "<script type=\"text/javascript\">\n";
    echo 
    "var Nachrichten = new Array();\n";

    for (
    $i=1;$i<=$zaehler;$i++)
    {
          echo 
    "Nachrichten[$i] = '$arrnachrichten[$i]';\n";
    }
    echo 
    "document.write(Nachrichten[1]);\n";
    echo 
    "alert(\"blabla\");\n";
    echo 
    "</script>\n"
    Im Quelltext kommt dann das raus:

    Code:
    <script type="text/javascript">
    var Nachrichten = new Array();
    Nachrichten[1] = '--Nachricht1--.';
    Nachrichten[2] = '--Nachricht2--';
    Nachrichten[3] = '--Nachricht3--';
    Nachrichten[4] = '--Nachricht4--';
    Nachrichten[5] = '--Nachricht5--';
    document.write(Nachrichten[1]);
    alert("blabla");
    </script>
    Soweit so gut.
    Das Problem ist jetzt, dass das "document.write(Nachrichten[1]);" nicht ausgeführt wird, was ja eigentlich ein Zeichen dafür ist, dass der Array leer ist.
    Ich habe jetzt aber auch mal einen Test mit "alert("blabla");" eingebaut, aber selbst das funktioniert nicht!
    Habe mit Ausgabeformaten schon so ziemlich alles durchprobiert. altert, document.write, getElemtByID, usw. Nichts funkioniert.
    Ich habe auch schon die alert-function in anderen HTML-Dateien ausprobiert. Da funktioniert sie. Nur in dieser PHP-Datei gehts nicht. Woran kann das liegen?

  2. #2
    321
    321 ist offline
    TP-Specialist 321 hilft, wo's geht 321 hilft, wo's geht 321 hilft, wo's geht Avatar von 321
    Registriert seit
    Nov 2004
    Ort
    Die Insel in Europa die aus Europa erst Europa macht _________________________ Nähe Lenzburg
    Beiträge
    4.248
    document.write();
    Schreibt ins HTML-Document aber während des Abarbeiten des Headers besteht das noch nicht!

    Packe alles in eine function (im Javascript) und rufe diese im Body-Tag onload auf, dann sollte es klappen.
    [321 Name="Joe"]
    wie immer, lieber gleich mit notepad, dem Editor meines Vertrauens
    [/321]


    use my HTML-Tester

    Motto'06: Mut zur deutschen Sprache!

  3. #3
    TP-Insider Sand*mann hilft, wo's geht Sand*mann hilft, wo's geht Avatar von Sand*mann
    Registriert seit
    Nov 2005
    Ort
    Berlin
    Beiträge
    587
    Wie soll das funktionieren?
    Die Javascript function wird doch per PHP erzeugt. Und die PHP-Variablen die dazu nötig sind, sind doch im Header noch gar nicht vorhanden.

    Habs ausprobiert, und wie zu erwarten geht es nicht.

  4. #4
    TP-Moderator Nightline ist ein richtiges Arbeitstier - DANKE Nightline ist ein richtiges Arbeitstier - DANKE Nightline ist ein richtiges Arbeitstier - DANKE Nightline ist ein richtiges Arbeitstier - DANKE Nightline ist ein richtiges Arbeitstier - DANKE Nightline ist ein richtiges Arbeitstier - DANKE Avatar von Nightline
    Registriert seit
    Jan 2003
    Ort
    Wien
    Beiträge
    4.127
    Und wenn du den body-Tag auch per PHP schreiben lässt und dann eben die Funktion aufrufst (möglicherweise ein Denkfehler von mir)?
    +lg Nightline
    -------------------------
    Fotoportfolio: http://www.coeser.de/showcase/
    Städte-Fotos aus aller Welt: http://www.coeser.de/impressions/
    DeviantArt-Account: http://nightline.deviantart.com

  5. #5
    321
    321 ist offline
    TP-Specialist 321 hilft, wo's geht 321 hilft, wo's geht 321 hilft, wo's geht Avatar von 321
    Registriert seit
    Nov 2004
    Ort
    Die Insel in Europa die aus Europa erst Europa macht _________________________ Nähe Lenzburg
    Beiträge
    4.248
    Ein JavaScript hat nur eine function, wenn diese als solche definiert ist.
    function name(argument/e) {
    Anweisungen...
    }


    PHP-Code:
    echo "<script type=\"text/javascript\">\n"
    echo 
    "function anzeige(){ \n"
    echo 
    "var Nachrichten = new Array();\n"

    for (
    $i=1;$i<=$zaehler;$i++) 

          echo 
    "Nachrichten[$i] = '$arrnachrichten[$i]';\n"

    echo 
    "document.write(Nachrichten[1]);\n"
    echo 
    "alert(\"blabla\");\n";  
    echo } 
    n";  
    echo "
    </script>\n"; 
    Daraus resultiert dann:

    <script type="text/javascript">
    function anzeige() {
    var Nachrichten = new Array();
    Nachrichten[1] = '--Nachricht1--.';
    Nachrichten[2] = '--Nachricht2--';
    Nachrichten[3] = '--Nachricht3--';
    Nachrichten[4] = '--Nachricht4--';
    Nachrichten[5] = '--Nachricht5--';
    document.write(Nachrichten[1]);
    alert("blabla");
    }
    </script>

    und dann noch:
    <body onload="anzeige()">
    [321 Name="Joe"]
    wie immer, lieber gleich mit notepad, dem Editor meines Vertrauens
    [/321]


    use my HTML-Tester

    Motto'06: Mut zur deutschen Sprache!

  6. #6
    TP-Insider Sand*mann hilft, wo's geht Sand*mann hilft, wo's geht Avatar von Sand*mann
    Registriert seit
    Nov 2005
    Ort
    Berlin
    Beiträge
    587
    Okaaay...

    Nur nochmal zum Verständnis im Klartext:

    Ich habe eine PHP-Datei.
    In dieser PHP-Dateien wird innerhalb des body-tags ein Array mit News vollgestopft.
    Wie soll Javascript im head-tag auf Variblen aus dem body-tag zugreifen, die es im head noch gar nicht gibt??

    Bin ich irgendwie zu doof, oder versteht ihr mein Problem nicht?!

  7. #7
    TP-Insider Sand*mann hilft, wo's geht Sand*mann hilft, wo's geht Avatar von Sand*mann
    Registriert seit
    Nov 2005
    Ort
    Berlin
    Beiträge
    587
    Ich bin schonmal einen Schritt weiter.
    Ich habe herausgefunden, dass nicht definierte Variablen, die man mit alert ausgibt ein "undefined" ausspucken.
    Ich hab jetzt mal die Deklarierung für den Nachrichten-Array aus dem PHP rausgenommen und separat direkt hinter das body-Tag geschrieben.
    Und siehe da: In der Alert-Box steht "undefined".
    Das heißt, das, was in der PHP-for-schleife steht, wird gar nicht gemacht!

    Edit:
    Nochmal einen Schritt weiter. Hab das ganze jetzt mal so umgebaut:
    PHP-Code:
    <script type="text/javascript">
    var Nachrichten = new Array();
    <?
    for ($i=1;$i<=$zaehler;$i++) {
    echo 
    "Nachrichten['".$i."'] = '".$arrnachrichten[$i].") ';";
    }
    ?>
    alert(Nachrichten.length);
    alert(Nachrichten['1']);
    </script>
    Das Problem liegt definitiv in der Zeile
    " echo "Nachrichten['".$i."'] = '".$arrnachrichten[$i].") ';"; "
    und zwar beim $i von $arrnachrichten[$i]. Wenn ich anstatt $i zum Beispiel 2 schreibe, kommt ein vernünftiges Ergebnis.
    Mit $i, bleibt die Variable nicht definiert.
    Warum??? Ich verzweifl hier...
    Geändert von Sand*mann (14.10.2006 um 02:51 Uhr)

  8. #8
    321
    321 ist offline
    TP-Specialist 321 hilft, wo's geht 321 hilft, wo's geht 321 hilft, wo's geht Avatar von 321
    Registriert seit
    Nov 2004
    Ort
    Die Insel in Europa die aus Europa erst Europa macht _________________________ Nähe Lenzburg
    Beiträge
    4.248
    Warum das mit $i nicht funzt, sehe ich jetzt auch nicht.
    Oder ist $zaehler nicht definiert?
    zB: $zaehler = arrnachrichten.length;

    Zum andern:
    1. Wenn Du die JS-Funktion onload ausführst (dh: wenn die Seite fertiggeladen ist), dann ist alles im Body im Zugriff der Funktion.

    2. Das geht um Ecken rum!
    Wozu brauchst Du diese JS-Funktion?
    Erstelle im PHP Deine Nachrichten dort wo Du sie in der Seite haben willst.
    zB. in einer <ul> oder einer <table>

    PHP-Code:
    echo "<body>\n";
    echo 
    "<h1>Meine Nachrichten</h1>\n";
    echo 
    "<table>\n";
    $zaehler arrnachrichten;
    for (
    $i=1;$i<=$zaehler;$i++) { 
     echo 
    "<tr><td>" $i "</td><td>" $arrnachrichten[$i] . "</td></tr>\n";
     }
    echo 
    "</table>\n";
    echo 
    "</body>\n"
    ?>
    [321 Name="Joe"]
    wie immer, lieber gleich mit notepad, dem Editor meines Vertrauens
    [/321]


    use my HTML-Tester

    Motto'06: Mut zur deutschen Sprache!

  9. #9
    TP-Insider Sand*mann hilft, wo's geht Sand*mann hilft, wo's geht Avatar von Sand*mann
    Registriert seit
    Nov 2005
    Ort
    Berlin
    Beiträge
    587
    Neinnein, $zaehler ist auf jeden Fall definiert, sonst würde später im Quelltext auch nicht etwas

    Nachrichten[1] = '--Nachricht1--.';
    Nachrichten[2] = '--Nachricht2--';
    Nachrichten[3] = '--Nachricht3--';
    Nachrichten[4] = '--Nachricht4--';
    Nachrichten[5] = '--Nachricht5--';

    artiges stehen. Denn dann würde die for-Schleife ja nicht ausgeführt.



    Achso ist das!
    Ok, wozu ich das brauche ist etwas kompliziert.
    Also ich möchte die News erstmal gekürzt ausgeben. 90 Zeichen oder so. Dahinter kommt dann ein Link "mehr" der mit der function belegt ist, mit der die komplette Nachricht angezeigt wird. Ich mache das ganze in Javascript, damit nicht extra neue Seiten geladen werden müssen, sonder alles in einem Fenster passiert. Dazu muss aber erstmal die Nachrichten in javascript haben. Und genau das funktioniert irgendwie nicht...

    Edit: ICH HAB DEN FEHLER GEFUNDEN!!!
    Es lag an zwei Zeilenumbrüchen in einer Nachricht! Die kann der anscheinend nicht als String in den Array schreiben^^
    Geändert von Sand*mann (14.10.2006 um 14:51 Uhr)

  10. #10
    321
    321 ist offline
    TP-Specialist 321 hilft, wo's geht 321 hilft, wo's geht 321 hilft, wo's geht Avatar von 321
    Registriert seit
    Nov 2004
    Ort
    Die Insel in Europa die aus Europa erst Europa macht _________________________ Nähe Lenzburg
    Beiträge
    4.248
    Dieses Auf- und Zufalten scheint ja IN zu sein, liesst man hier immer wieder was.
    Das kann aber auch mit CSS gelöst werden und dann singst Du

    Nun ade Du mein lieb Java-Script, lieb Java-Script adeeee ...
    [321 Name="Joe"]
    wie immer, lieber gleich mit notepad, dem Editor meines Vertrauens
    [/321]


    use my HTML-Tester

    Motto'06: Mut zur deutschen Sprache!

  11. #11
    TP-Insider Sand*mann hilft, wo's geht Sand*mann hilft, wo's geht Avatar von Sand*mann
    Registriert seit
    Nov 2005
    Ort
    Berlin
    Beiträge
    587
    Lieb Javascript? Das ist mein erstes Projekt mit dieser Sprache^^

    Wie kann ich denn mit CSS die Nachricht automatisch abkürzen?

    Hab jetzt lange Google, die Forenduche und mich mit manuellem Suchen gequält, und nichts ähnlcihes gefunden. Ich bräuchte mal ein Beispiel, wie du das meinst!
    Geändert von Sand*mann (15.10.2006 um 01:40 Uhr)

  12. #12
    TP-Specialist rewboss ist ein richtiges Arbeitstier - DANKE rewboss ist ein richtiges Arbeitstier - DANKE rewboss ist ein richtiges Arbeitstier - DANKE rewboss ist ein richtiges Arbeitstier - DANKE rewboss ist ein richtiges Arbeitstier - DANKE rewboss ist ein richtiges Arbeitstier - DANKE Avatar von rewboss
    Registriert seit
    Mar 2005
    Ort
    Unterfranken
    Beiträge
    2.639
    Zitat Zitat von 321
    document.write();
    Schreibt ins HTML-Document aber während des Abarbeiten des Headers besteht das noch nicht!
    Wenn aber der Browser an den JavaScript-Befehl kommt, der im <head> steht, wird der <head> implizit geschlossen und der <body> implizit aufgemacht. Beim </head>-Tag wird zwar ein Fehler erzeugt, der Benutzer aber erfährt nichts davon. (Und der W3C-Validator meldet auch keinen Fehler, weil er keinen JavaScript-Parser besitzt.)

    So. Und wie macht man sowas mit CSS? Hier ist eine Möglichkeit. Dabei ist es ganz einfach:

    Die gesamte Meldung wird in ein <div> mit class="holder" gepackt. Das, was zunächst ausgeblendet werden soll, wird in <a href="#more" class="hid" onclick="this.hideFocus=true" onblur="this.hideFocus=false"> und <em> gepackt, das "Mehr..." in ein <span> gepackt. Du kannst da den Quelltext anschauen, um zu sehen, wie das geht.

+ Antworten

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51