Textový parametr – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Textový parametr – JavaScript, AJAX, jQuery – Fórum – Programujte.comTextový parametr – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

don_Dominique0
Super člen
12. 11. 2007   #1
-
0
-

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ěď.

Nahlásit jako SPAM
IP: 193.165.176.–
Petroff0
Věrný člen
14. 11. 2007   #2
-
0
-

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")

Nahlásit jako SPAM
IP: 89.102.211.–
don_Dominique0
Super člen
15. 11. 2007   #3
-
0
-

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.

Nahlásit jako SPAM
IP: 84.42.148.–
Prog.0
Věrný člen
15. 11. 2007   #4
-
0
-

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

Nahlásit jako SPAM
IP: 213.160.186.–
Prog.
Petroff0
Věrný člen
15. 11. 2007   #5
-
0
-

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....

Nahlásit jako SPAM
IP: 89.102.211.–
don_Dominique0
Super člen
16. 11. 2007   #6
-
0
-

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.

Nahlásit jako SPAM
IP: 84.42.148.–
Prog.0
Věrný člen
17. 11. 2007   #7
-
0
-

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);

Nahlásit jako SPAM
IP: 213.160.186.–
Prog.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 3 hosté

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

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý