Johannes: Probleme mit 'document.write'

Ich habe ein Problem mit document.write!

Immer, wenn ich einen Text in eine HTML-Datei schreiben will, muss ich das so:

document.write("Test!<br>\nDies ist ein Test!");

Viel praktischer wäre es (ich muss nämlich ziemlich(!) viel in die HTML-Datei hineinschreiben) so:

document.write("
Test!
Dies ist ein Test!
");

Doch ich bekomme natürlich einen Fehler.

Kennt jemand eine andere Möglichkeit?

  1. Geht nicht !

    1. Geht nicht !

      Aha!

  2. Geht nicht ganz deiner meinung Nobia Gelda !

    #!/usr/bin/perl
      # Dieses Beispiel liest eine kommabegrenzte Datei mit Adressen ein
      # und schreibt sie HTML-formatiert in eine neue Datei

    @Adressen = ("");    # Speicher für alle Datensaetze
      @Datensatz = ("");   # Speicher für alle Felder des aktuellen Datensatzes
      $Felder = "";        # Speicher für die Namen der Felder (stehen in der ersten Dateizeile
      $i = 0;
      open(ADRESSEN, "<adressen.csv") die "Adressendatei nicht gefunden\n";
      while(<ADRESSEN>)              # Kommabegrenzte Datei einlesen
       {
        if($i == 0)                  # erste Zeile der Datei einlesen
         {
          $Felder = $_;              # Feldnamen ermitteln
         }
        else
         {
          $Adressen[$i] = $_;        # ab zweiter Zeile in @Adressen einlesen
         }
        $i++;                        # Datensatzzähler erhöhen
       }
      close(ADRESSEN);
      $Anzahl = $i - 1;              # Anzahl Datensätze merken
      chop($Felder);
      @Datenfelder = split(/,/,$Felder);    # Erste Zeile mit Feldnamen aufdröseln

    open(ADRESSENDAT, ">adressen.htm");   # HTML-Datei zum Schreiben öffnen
      print ADRESSENDAT "<html>\n<head>\n";  # HTML-Datei schreiben
      print ADRESSENDAT "<title>Adressen</title>\n";
      print ADRESSENDAT "</head>\n<body bgcolor=#FFFFFF>\n";
      for(@Adressen)                        # solange Daten in der Adressenliste sind
       {
        @Datensatz = split(/,/,$_);         # Aktuellen Datensatz aufdröseln
        $i = 0;
        for(@Datensatz)
         {
          print ADRESSENDAT "<b>$Datenfelder[$i]:</b> $Datensatz[$i]<br>\n";   # Aktuellen Datensatz schreiben
          $i++;
         }
       }
      print ADRESSENDAT "</body>\n</html>\n";
      close(ADRESSENDAT);
      print $Anzahl," Datensaetze geschrieben\n";   # Nur zur Kontrolle: auf Standardausgabe

    1. #!/usr/bin/perl
        # Dieses Beispiel liest eine kommabegrenzte Datei mit Adressen ein
        # und schreibt sie HTML-formatiert in eine neue Datei

      Ich wollte das ganze eigentlich für JavaScript und nicht für Perl wissen!

      1. Ach so ! Sag das doch gleich !

        1. Ach so ! Sag das doch gleich !

          Was soll ich gleich sagen? Du sprichst in Rätseln.
          Es kann doch sein, das es eine Lösung gibt,
          in Perl giebt es ja auch eine (sfausles).

  3. Hallo Johannes,

    document.write("
    Test!
    Dies ist ein Test!
    ");

    Du kannst es ja mal so versuchen:

    t = new Array(
    'Zeile1',
    'Zeile2',
    'Zeile3',
    'Zeile4',
    'Zeile5',
    'Zeile6',
    'Zeile7');

    for (a=0;a<t.length;a++)
    { document.write(t[a]+"<BR>\n");}

    Ist vielleicht nicht optimal, aber man hat eine gewisse Übersichtlichkeit dadurch.

    1. t = new Array(
      'Zeile1',
      'Zeile2',
      'Zeile3',
      'Zeile4',
      'Zeile5',
      'Zeile6',
      'Zeile7');

      for (a=0;a<t.length;a++)
      { document.write(t[a]+"<BR>\n");}

      Hi Johannes (sehr schöner Name ;-) )

      Ja, das würde auch gehen, aber ich glaube ich mach es so wie Carsten es vorgeschlagen hat.
      Trotzdem vielen Dank!

      cu,
      Johannes

    2. Hi Johannes,  (<---Plural)

      t = new Array(
      'Zeile1',
      'Zeile2',
      'Zeile3',
      'Zeile4',
      'Zeile5',
      'Zeile6',
      'Zeile7');

      for (a=0;a<t.length;a++)
      { document.write(t[a]+"<BR>\n");}

      das geht so, document.write() ist aber sehr langsam bei vielen Aufrufen.

      schneller gehts wenn du die Ausgabe erst in einem String sammelst:

      var out="";
      for (a=0;a<t.length;a++)
      {
          out +=t[a] +"<br>\n";
      }
      document.write(out);

      Gruss,
      Carsten

  4. Hi Johannes,

    klar geht das.
    mach einfach einen Backslash ans Ende jeder Zeile, _unmittelbar_ vor dem Zeilenvorschub.

    Also

    document.write("\ Test!\ Dies ist ein Test!\ ");

    Gruss,
    Carsten

    1. Hi Johannes,

      document.write("\ Test!\ Dies ist ein Test!\ ");

      Hi Carsten,

      ja, das ist garnicht schlecht, so werd ichs machen!
      Denn sonst ist es echt hoffnungslos!

      cu,
      Johannes

  5. Hallo

    Schreib einfach alles in ein textfile rein.
    Dann ersetze \n (zeilenumbruch) \\n (\ und zeilen umbruch.

    Dann kommt sowas raus:

    var a = "text\ text\ text\ text";

    Tschüs

    Daniel

    1. Hi Daniel,

      Schreib einfach alles in ein textfile rein.

      Geht das denn mit JavaScript? Das hab ich mir nämlich schon überlegt!

      cu,
      Johannes Weißl

      1. Hi Johannes

        Ich habe eigendlich gemeint, das du das mit einem Texteditor machst, damit du deine
        HTML-Datei schnell in den JS-Code einbetten kannst.

        Du kannst natürlich auch eine Datei mit dem Code einlesen, dann brauchst du das alles nicht.
        Wie das geht? < http://www.teamone.de/selfaktuell/artikel/jsfileop/artikel.htm>

        Tschüs

        Daniel