Parameter an JavaScript-Funktion übergeben
17. Januar 2009
In meinen Konfigurationsdateien verwende ich hin und wieder auch mal Variablen, deren Werte (Texte) sich über mehrere Zeilen erstrecken. Solche mehrzeiligen Texte werden in der Config-Datei mittels """ am Anfang sowie am Ende markiert z.B.:
Das funktioniert auch soweit ganz gut, wenn man die Variable bzw. deren Text im Template selbst ausgibt (z.B. <div>text1 = {#text1#}</div>).
Ich hatte aber gerade das Problem, dass ich eine solche Variable als Parameter an eine JavaScript-Funktion übergeben wollte, etwa nach folgendem Prinzip:
Dieser Ansatz funktionierte jedoch nicht. Ich probierte noch verschiedene Sachen mit den Anführungszeichen, aber es half alles nichts.
Dann dachte ich mir: "Was wird wohl passieren, wenn man die Zeilenumbruchzeichen (unter Linux '\n') aus dem Text der Variable entfernt?" Also dann mal das Zeugs entfernt und das Ergebnis einer neuen Variablen zugewiesen:
Nun die Variable neuText1 als Parameter übergeben:
Und siehe da, es funktionierte ganz wunderbar.
Noch ein kleiner Tipp! Wenn man den mehrzeiligen Text nicht nur - wie gezeigt - in die drei doppelten Anführungszeichen (""") hüllt, sondern gleich auch noch die einfachen Anführungszeichen (') angibt, dann spart man sich dies bei der Parameterübergabe:
# Konfigurationsdatei (mittels config_load einbinden)
# globale Variable (mehrzeilig)
text1 = """Sed ut perspiciatis, unde omnis iste natus error sit
voluptatem accusantium doloremque laudantium, totam rem
aperiam eaque ipsa, quae ab illo inventore veritatis et
quasi architecto beatae vitae dicta sunt"""
...
Das funktioniert auch soweit ganz gut, wenn man die Variable bzw. deren Text im Template selbst ausgibt (z.B. <div>text1 = {#text1#}</div>).
Ich hatte aber gerade das Problem, dass ich eine solche Variable als Parameter an eine JavaScript-Funktion übergeben wollte, etwa nach folgendem Prinzip:
...onclick="show('{#text1#}');"
Dieser Ansatz funktionierte jedoch nicht. Ich probierte noch verschiedene Sachen mit den Anführungszeichen, aber es half alles nichts.
Dann dachte ich mir: "Was wird wohl passieren, wenn man die Zeilenumbruchzeichen (unter Linux '\n') aus dem Text der Variable entfernt?" Also dann mal das Zeugs entfernt und das Ergebnis einer neuen Variablen zugewiesen:
{assign var=neuText1 value=#text1#|replace:"\n":""}
Nun die Variable neuText1 als Parameter übergeben:
...onclick="show('{#neuText1#}');"
Und siehe da, es funktionierte ganz wunderbar.
Noch ein kleiner Tipp! Wenn man den mehrzeiligen Text nicht nur - wie gezeigt - in die drei doppelten Anführungszeichen (""") hüllt, sondern gleich auch noch die einfachen Anführungszeichen (') angibt, dann spart man sich dies bei der Parameterübergabe:
# globale Variable (mehrzeilig mit """')
text1 = """'Sed ut perspiciatis, unde omnis iste natus error sit
voluptatem accusantium doloremque laudantium, totam rem
aperiam eaque ipsa, quae ab illo inventore veritatis et
quasi architecto beatae vitae dicta sunt'"""
...
{* unter die Parameterübergabe ohne Anführungszeichen im Template *}
<div onclick="show({#neuText1#});">...</div>
Immer noch kein Kommentar. Jetzt wird's aber mal Zeit!
HILFE
Code-Beispiele werden mit den BBCodes [code][/code] dargestellt.
Jedes Tag muss eine Zeile für sich allein haben, d.h der Beispiel-Code
muss wirklich ZWISCHEN den Tags stehen. Beispiel:
Alles was zwischen den beiden Tags [register] und [/register] eingetragen wird, ist nur für registrierte (und eingeloggte) User sichtbar.
[code] ACHTUNG! HIER UMBRUCH WICHTIG. TAG [code] MUSS ALLEIN STEHEN
#include <stdio.h>
int main( void ){
return 0;
} ACHTUNG! HIER UMBRUCH WICHTIG. NACHFOLGENDES TAG [/code] MUSS ALLEIN STEHEN
[/code]Alles was zwischen den beiden Tags [register] und [/register] eingetragen wird, ist nur für registrierte (und eingeloggte) User sichtbar.
Dein Name *
Deine Email
Deine Website
Vorschau