Zdravim,
mám problém potřebuji předat fci text jako parametr v tomto textu se ovšem budou vyskytovat i značky \n což mi při volání této fce způsobí chybu: unterminated string literal.
Nenapadá někoho jak tento text predat fci bez toho aniž by se to ve zdrojovém kódu při volání fci zalomilo a to způsobilo chybu ?
Moc díky za odpověď.
Fórum › JavaScript, AJAX, jQuery
Textový parametr
Jestli myslíš něco jako tohle:
function zobraz(text){
alert("Text:\n"+text)
}
text1="1.radek\n2.radek" /***** Takhle je to v pořádku *****/
text2="1.radek
2.radek" /***** NELZE neukončený $ *****/
zobraz(text1) /****** zobrazí řádky **********/
tak to funguje.
Asi ti jde o něco jiného: napiš tedy jak řetězec zadáváš (odkud a jak ho vytváříš) popř. kam řetězec se znaky LF umísťuješ
Jinak obecně se podobné problémy řeší náhradou znaku LF dvojicí znaků: lomitko+n
uprav_text=orig_text.replace("\n","\\n")
To Petroff : Norekneme ze je to neco takovyho:
fce (tex){
// operace s textem.
}
kdyř dam
fce ("obycejny text tak to funguje");
ele když dam
fce ("zalomeny\n text \n ak \n tak tenm i nefunguje");
tak to mi vubec nechce funguvat.
Ten kod je korektny, chyba bude niekde v
[// operace s textem.
Co tak namiesto "tak to mi vubec nechce funguvat." napisat aku chybu to hadze ?
Pre vyvoj JS jednoznacne firefox+firebug
http://www.getfirebug.com/js.html http://www.getfirebug.com/js.html
A zkusils tu úpravu ?
var text="zalomeny\n text \n po uprave \n mi bude fungovat";
text=text.replace("\n","\\n");
fce (text); /* Hlásí to chybu ?? */
Jinak by mi pomohlo vědět, co to je za funkce (tím myslím její kód), už bychom to dávno měli - takhle jen hádám....
To Prog. : Tu chybu sem psal už v prvnim příspěvku a je to právě firebug který mi jí nahlásil.
To Petroff : Díky moc to \\n funguje. Kód sem sem neházel protože bylo zřejmé ře hyba je jenv předávání toho parametru.
To don_Dominique : Ospravedlňujem sa, ten prvý príspevok som len tak preletel. Stále však trvám na tom, že kód z tohto príspevku je korektný, reťazec sa funkcii odovzdá správne (tak ako bol zadaný) chyba je niekde pri spracovaní textovej premmennej. Pravdepodobne vzniká niekde pri použití niektorej z funkcií eval, alebo setTimeout, keď skladáš do stringu nejaký príkaz spolu s tou textovou premmennou.
To Petroff : text=text.replace("\n","\\n") nahradí iba prvý NL za sekvenciu dvoch znakov \n, ak chces nahradiť všetky, tak text.replace(/\n/g,"\\n");
Len na pochopenie, priklad:
var f1 = function(str) { alert(str) };
var f2 = function(str) { eval("alert('"+str+"')"); };
var text1 = "zalomeny\n text \n po uprave \n mi bude fungovat";
var text2 = text1.replace(/\n/g,"\\n");
f1(text2); // f1 vyhodi text presne tak, ako ho dostala na vsupe
f1(text1); // takže bude fungovať aj pre text1 aj text2
f2(text2); /* toto zbehne "normalne", vo fcii eval bude toto:
alert('zalomeny\n text \n po uprave \n mi bude fungovat')
*/
f2(text1); /* toto vyhodi chybu, pretoze:
vo fcii f2 sa pre text1 vysklada takyto retazec:
alert('zalomeny
text
po uprave
mi bude fungubat')
*/
To All: Je nekorektné definovať funkciu, ktorá prijíma textový parameter tak, že v ňom NL musia byť nahradené za ich stringovú escapovaciu sekvenciu (dva znaky "\" a "n"). Tento prevod by sa mal previesť v prípade potreby až vo vnútri funkcie:
var f1 = function(str)
{
alert(str); // normalne použitie stringovej premmennej
// použitie stringovaj premmennej na vytvorenie stringoveho prikazu:
var prikaz = 'alert("';
prikaz+= str.replace(/\n/g,"\\n").replace(/\"/g,'\\"');
prikaz+= '")';
eval(prikaz); // zavolanie stringoveho prikazu
};
var text1 = "zalomeny\n text \n po uprave \n mi bude fungovat";
f1(text1);
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Primitivní textový editor — založil paul27
Textový soubor do 2D pole — založil Gregory
Tkinter - Textový editor — založil Poky
C# GTK Textovy editor — založil Miro1701
Serializace vs. Textový soubor vs. Databáze — založil Matěj Andrle
Moderátoři diskuze