# Zeilenumbruch in berechnetem String aus Array



## TIMS_Ralf (28. November 2013)

Hallo Leute,

Habe in einem Array diverse Strings:


```
Datensatz = new Array();
 Datensatz[0] = new Object();
  Datensatz[0]["Hd"] = " Demo für \"1_yK#0#NmK#_yK1\"";
  Datensatz[0]["Dt"] = "Kostenlos und unverbindlich: Jetzt eine individuelle Demo für \"1_yK#0#NmK#_yK1\" bestellen?";
 
 Datensatz[1] = new Object();
  Datensatz[1]["Hd"] = "Zum Shop"
  Datensatz[1]["Dt"] = "Hier den Shop mit Preisen für \"1_yK#0#NmL#_yK1\" aufrufen?";
  
// usw.
```

Im Script wird einiges zusammengebaut, dann Der_fertige_String ins HTML geschrieben:


```
HTML_Inhalt_Laenge = HTML_Tag.firstChild.nodeValue.length;
    HTML_Tag.firstChild.replaceData(0, HTML_Inhalt_Laenge, Der_fertige_String);
```

Das funktioniert alles bestens. Allerdings krieg ich keine Zeilenumbrüche in den String - weder Escape-Sequenz, noch BREAK-Tag, noch - in meiner Verzweiflung - ASCII-Codes. Bsp.: Zeilenumbruch hinter "Kostenlos und unverbindlich:"


```
Datensatz[0]["Dt"] = "Kostenlos und unverbindlich:\nJetzt eine Demo für \"1_yK#0#NmK#_yK1\" bestellen?";
Datensatz[0]["Dt"] = "Kostenlos und unverbindlich:\n\rJetzt eine Demo für \"1_yK#0#NmK#_yK1\" bestellen?";
Datensatz[0]["Dt"] = "Kostenlos und unverbindlich:<BR>Jetzt eine Demo für \"1_yK#0#NmK#_yK1\" bestellen?";
Datensatz[0]["Dt"] = "Kostenlos und unverbindlich:%0d%0aJetzt eine individuelle Demo für \"1_yK#0#NmK#_yK1\" bestellen?";
Datensatz[0]["Dt"] = "Kostenlos und unverbindlich:" + <BR> + "Jetzt eine Demo für \"1_yK#0#NmK#_yK1\" bestellen?";
```

Wenn ich in den String z.B. <Umbruch> einsetze und lasse dies am Ende aller Berechnungen durch die Escape-Sequenz ersetzen, dann ersetzt er mir zwar <Umbruch> mit der Escape-Sequenz... führt die Escape-Sequenz ( = den Umbruch) aber nicht aus. 


```
Datensatz[0]["Dt"] = "Kostenlos und unverbindlich:<Umbruch>Jetzt eine Demo für \"1_yK#0#NmK#_yK1\" bestellen?";
// ...
Der_fertige_String = Der_fertige_String.replace(/<Umbruch>/g, "\n");
```

Gebe ich den String allerdings in "alert(Der_fertige_String);" aus... dann kommt der Umbruch...!******

Sonstiges: Der Eintrag http://www.tutorials.de/javascript-...umbruch-n-javascript-funktion-uebergeben.html hilft da auch nicht weiter, da ich im Array ja nur einen String habe, den ich nicht zusammenbauen kann.


Also: Woran liegts und wie bekomme ich so nen blöden Zeilenumbruch in den String des Arrays...?

Vielen Dank vorab,
Ralf


----------



## jeipack (28. November 2013)

Ich nehme an das ganze lässt du im Browser anzeigen?

wie wäre es dann mit:

```
Der_fertige_String = Der_fertige_String.replace(/<Umbruch>/g, "<br />");
```


----------



## TIMS_Ralf (28. November 2013)

Hi...
danke erstmal für Hinweis, aber nöö... macht er auch nicht - der Browser 
Er - der Browser - ersetzt es und schreibt das "<br />" dann in den Text. Gleiches für 


```
Der_fertige_String = Der_fertige_String.replace(/<Umbruch>/g, "<br>");
Der_fertige_String = Der_fertige_String.replace(/<Umbruch>/g, "<br><br>");
```

Das ist für ihn ein String, kein TAG.
Und hier ersetzt er zwar die Escaoe-Sequenz, führt den Umbruch aber nicht aus:


```
Der_fertige_String = Der_fertige_String.replace(/<Umbruch>/g, "\n");
Der_fertige_String = Der_fertige_String.replace(/<Umbruch>/g, "\r\n");
```

...?


----------



## jeipack (28. November 2013)

Hmm hast recht

http://jsfiddle.net/jFz4J/

Benutze für solche sachen immer jQuery. replaceData brauchte ich bis jetzt noch nicht.


Ersetze:

```
HTML_Tag.firstChild.replaceData(0, HTML_Inhalt_Laenge, Der_fertige_String);
```
mit:

```
HTML_Tag.firstChild.replaceData(0, HTML_Inhalt_Laenge, Der_fertige_String);
HTML_Tag.parentElement.removeChild(HTML_Tag);
document.write(HTML_Tag.firstChild.nodeValue);
```
Das müsste funktionieren, aber insgesamt würde man da eine schönere Lösung hinbekommen.



Wieso benutzt du kein jQuery?


Edit: Alternativ:

```
HTML_Tag.innerHTML = Der_fertige_String;
```
Nimm das, das Funktioniert mit Tags und ist dazu noch schöner  (und die Länge musst du auch nicht mehr ausrechnen)


----------



## TIMS_Ralf (28. November 2013)

Also in meinem Code steht natürlich nicht "Der_fertige_String"  hab ich hier nur fürs bessere Verständnis gewählt. 
Im "echten Quelltext" ist die Ersetzung ausgeführt, es steht aber auch kein Umbruch, sondern eben.


```
<td>Kostenlos und unverbindlich: Jetzt eine individuelle Demo f&uuml;r "Domain_Test" bestellen?</td>
```

Ich versteh echt nicht, was der macht... bzw. weshalb er die Escape-Sequenz nicht ausführt!?
Die Gänsefüßchen mit \" hat er doch auch ausgeführt...?


----------



## TIMS_Ralf (28. November 2013)

Du Held - Du...!

Alles klar, mit .innerHTML funktionierts! Die Lösung:


```
Der_fertige_String = Der_fertige_String.replace(/<Umbruch>/g, "<BR>");
// ...
HTML_Tag.innerHTML = Der_fertige_String;
```

An der ******e häng ich jetzt seit 3 Tagen... DANKE - SUPER!
Warum es mit replaceDate nicht funktionierte ist mir schleierhaft... das scheint kein reines HTML reinzuschreiben. Aber egal... dannhalt mit innerHTML .


jQuery... ja, hast recht, geht aber leider nicht: Das JS/HTML/CSS-Konstrukt läuft auf einigen Domains - und dort jeweils auf massig WEB-Seiten. Da kann ich nichts ändern - eben nur intern, ohne dass Paramter u.ä. geändert werden dürfen. Wollte ja nur n blöden Umbruch haben... 

DANKE!
Gruß Ralf


----------

