Autor | Zpráva | ||
---|---|---|---|
Anonymní Profil * |
#1 · Zasláno: 27. 5. 2009, 18:21:34
Dobrý den chci se zeptat pomocí javascriptu se mi vkládají data do dokumentu. Jde mi to to funkce vymadData smaze vsechen text, který se tam pomocí vypisText vloží. Bohužel nevím jak správně napsat, když tam bude vložených 20 řádků typu:
<p>radek20</p> <p>radek19</p> .. atd <p>radek1</p> nový text se vždycky přidává před poslední přidane, aby to bylo vidět vždy nahoře a nevím jak udělat když přijde 21 <p>neco</p>, aby se to první smazalo.. aby bylo na obrazovce vidět vždy jen 20 posledních řádků. starší se mazali zde kody na smazani a vypis: function vypisText(txt) { vystup.innerHTML = txt+vystup.innerHTML; } function vymazData() { // v jednoduchem cyklu smazeme vsechny elementy v prvku vystup while(vystup.hasChildNodes()) vystup.removeChild(vystup.childNodes[0]); return false; } zkoušel jsem něco jako: while(vystup.hasChildNodes()) vystup.removeChild(vystup.childNodes[20+]); ale to asi nějak nejde :-( díky za rady s javascriptem moc neumím jen základy a tohle mi trochu neleze do hlavy |
||
DJ Miky Profil |
#2 · Zasláno: 27. 5. 2009, 19:18:02
Pokud vkládáš vždy jen jeden <p> najednou, tak stačí vždy smazat childNodes[20] (= 21. potomka), protože víc jich tam mít nebudeš...
|
||
Pinqui Profil |
#3 · Zasláno: 28. 5. 2009, 20:24:17
ne právě že se může přidat jedním vypisText třbe jeden takto:
vypisText('<p>nejaky text</p>'); ale také více: vypisText('<p>nejaky text</p> <p>dalsi text</p> <p>nejaky text</p> <p>ahoj</p> <p>cokoliv</p> '); |
||
Chamurappi Profil |
#4 · Zasláno: 28. 5. 2009, 20:28:05
Reaguji na Pinqui:
> ale také více: > > vypisText('<p>nejaky text</p> > <p>dalsi text</p> > <p>nejaky text</p> > <p>ahoj</p> > <p>cokoliv</p> > '); To ti takhle nemůže fungovat, neescapované odřádkování v řetězci je syntaktická chyba. Chceš-li mazat 21. potomka, dokud nějaký 21. potomek existuje, je smyčka snadná: while(vystup.childNodes[20]) vystup.removeChild(vystup.childNodes[20]); |
||
bohyn Profil |
#5 · Zasláno: 28. 5. 2009, 20:28:59
while(vystup.hasChildNodes() && vystup.childNodes.length > 19) { vystup.removeChild(vystup.childNodes[20]); } |
||
Pinqui Profil |
#6 · Zasláno: 28. 5. 2009, 21:34:33
píšemi to chybu:
uncaught exception: [Exception... "Component returned failure code: 0x80004003 (NS_ERROR_INVALID_POINTER) [nsIDOMHTMLDivElement.removeChild]" nsresult: "0x80004003 (NS_ERROR_INVALID_POINTER)" location: "JS frame :: http://superpokec.cz/try/?rid=22348 :: vypisText :: line 32" data: no] |
||
AM_ Profil |
#7 · Zasláno: 29. 5. 2009, 00:27:16
bohynův příklad je špatně. V případě, že délka je 20 (tedy splněna podmínka >19), existují elementy 0..19 a při smazání elementu s indexem 20 musí nastat chyba. Chamurappi to psal správně. Nebo si jen tu 19 přepiš na 20 ;)
|
||
Pinqui Profil |
#8 · Zasláno: 29. 5. 2009, 05:59:30
A co s těmi neescapované odřádkování v řetězci köd mám:
function dolly($room = '',$id = '') { $db = MyDB::_(); $text =''; if(!empty($id)){ $query = $db->query("select * from {$room}_text where id > '$id' order by id ASC"); if ($query->num_rows != 0) { while($sel = $query->fetch_assoc()){ $text .="{$sel['od']}: {$sel['text']}</p>"; $last = $sel['id']; } }else $last = $id; } return "repeat('script','$last'); vypisText('$text');"; } to mi jde do té funkce vypisText |
||
Časová prodleva: 3 dny
|
|||
Pinqui Profil |
#9 · Zasláno: 31. 5. 2009, 18:19:23 · Upravil/a: Pinqui
Když totiž zadám:
$text .="<p>{$sel['od']}: {$sel['text']}</p>\n"; tak mi to hodí chybu... A ještě by mě zajímalo, každej výpis textu bude začínat jménem.. například: Jarda: Simi: mám se fajn Pepa: Jarda: ahoj Jarda: ahoj česky :-D Simi: jak se máš? Jarda: hello Jestli jde, když bych chtěl vymazat všechny texty od Jarda, tak jak to udělat?? Jestli nějako přez split textu nebo jinak? Aby mi to nesmazalo i to kdo píše jardoj.. Díky předem. V php a mysql to není těžké, tam to smáznu z mysql a je to, ale s javascriptem moc neumím tak věřím v to že se tu najde někdo kdo umí js dobře a poradí. Jinak díky všem co už pomohli |
||
Časová prodleva: 15 let
|
0