Autor | Zpráva | ||
---|---|---|---|
hal_sk Profil |
#1 · Zasláno: 18. 5. 2008, 02:14:27
Zdravím.
Potrebujem spraviť php skript, ktorý z textu v textarea spočíta znaky. Na stránke bude selectbox s option s hodnotou napr.: "a", a keď na to kliknem tak sa mi vypíše číslo že koľko krát sa znak "a" v texte vyskytuje. Dík za odpovede. |
||
Hooonza Profil |
#2 · Zasláno: 18. 5. 2008, 03:33:02
Jde ti o počítání znaků v textaree? Není jednodušší javascript (nemusí se nikam posílat...)? Funkční příklad
<html> <script> function count(a) { pole = ">"+document.f.jj.value+"<"; pole = pole.split(a); pocet_pole = pole.length-1; alert(pocet_pole); }; </script> <form name=f> <textarea name=jj>abcd cdcdc</textarea><br> <select name=sel> <option value=a>a </option> <option value=b>b </option> <option value=c>c </option> </select> <input type=button onclick="count(document.f.sel.value);" value="Počítej"> </form> |
||
Hooonza Profil |
#3 · Zasláno: 18. 5. 2008, 03:47:57
TOhle je lepší, ihned automaicky vypisuje počet:
<html> <script> function count(a) { pole = ">"+document.f.jj.value+"<"; pole = pole.split(a); pocet_pole = pole.length-1; document.f.pocet.value = pocet_pole; }; </script> <form name=f> <textarea name=jj onKeyUp="count(document.f.sel.value);"></textarea><br> Počet písmenek <select name=sel onchange="count(this.value)"> <option value=a>a </option> <option value=b>b </option> <option value=c>c </option> <option value=d>d </option> <option value=e>e </option> <option value=f>f </option> <option value=g>g </option> </select>: <input type=text readonly name=pocet size=4> </form> |
||
hal_sk Profil |
#4 · Zasláno: 18. 5. 2008, 18:30:03 · Upravil/a: hal_sk
TOhle je lepší...
Díky. Použil som to a funguje to dobre. Len by som tomu rád pochopil. Už 4 hodiny študujem ten skript, spolu so seriálmi o JS. Nemôžem to pochopiť. Napr. toto: onKeyUp="count(document.f.sel.value) To je funkcia "count" ktorá je definovaná medzi: <script></script>. Ale som jeleň s tých parametrov: document.f.sel.value. A napríklad nazačiatku je u "count" parameter (a). Jaký má význam? Dík za trpezlivosť. PS: pôvodne som to chcel v php, ale v JS to nevyzerá zle. Prosím admina keby bol tak dobrý a presunul tento thread do sekcie JavaScript. |
||
Hooonza Profil |
#5 · Zasláno: 18. 5. 2008, 19:04:57 · Upravil/a: Hooonza
hal_sk
onkeyup - událost klávesy (http://www.jakpsatweb.cz/javascript/udalosti.html#klavesnice) count - ano, je to ta funkce document.f.sel.value - přístup javascriptu k hodnotě (value) pole "sel" (name=sel má formulářové pole select) ve formuláři (formulář má name=f) v dokumentu (viz http://www.jakpsatweb.cz/javascript/objekt-document.html). Funkce (http://www.jakpsatweb.cz/javascript/funkce.html) může přijmout parametr ( funkce(parametr) ), když jí budu s tímto parametrem volat (onkeyup=count(parametr), kde parametrem je document.f.sel.value, tedy hodnota selectu). Hodnota selectu (písmenka, které chci počítat) se předá funkci count. Ta zjistí obsah textové arey (document.f.jj.value), "orámuje ji" značkami "><" (indiferentní značka, která ná jinak nezajímá; je to potřebné pro další postup) a rozdělí pomocí písmenka, které chci spočítat. Rozdělením vznikne o 1 více částí, než kolik je písmenek, proto 1 musím odečíst a dostanu počet písmenek. Kdybych na začátku "neorámoval" hodnotu a textové arei značkami, pokud by počítané písmenko leželo na okrajích, po rozdělení by se to neprojevilo na počtu dílků původního obsahu textu a tak bychom přišli o jedno písmenko, které jsme chtěli počítat. Pozor, funkce rozlišuje velikot písmen (A není a). |
||
Dranel Profil |
#6 · Zasláno: 18. 5. 2008, 20:11:21
Hooonza
Existuje v JS něco jako jsou v PHP pole a k tomu fce foreach? Abych nemusel vypisovat všechny optiony ale udělal to jako smyčku. |
||
Hooonza Profil |
#7 · Zasláno: 18. 5. 2008, 20:36:36 · Upravil/a: Hooonza
Větvení a cykly - http://www.jakpsatweb.cz/javascript/vetveni.html ...
Pole - http://www.jakpsatweb.cz/javascript/pole.html ... No a pak je tu ještě strýček Goo - oogle... |
||
Dranel Profil |
#8 · Zasláno: 18. 5. 2008, 21:01:51
Hooonza
Vím, i teta Seznamka. Jenže já v JS nikdy nic nepsal. Nevím ani, jak se vypisuje do dokumentu :). Ale i tak dík, jdu si to najít. |
||
peta Profil |
#9 · Zasláno: 19. 5. 2008, 10:37:01
Dranel
"Jenže já v JS nikdy nic nepsal" to neni omluva, to je spis vymluva. Bud to chces a poradis s napovedou nebo hledas nekoho, kdo to udela za tebe. Jenze to by musel byt nadsenec nebo mit spoustu levneho casu. |
||
Chamurappi Profil |
#10 · Zasláno: 19. 5. 2008, 11:04:49
Reaguji na Dranela:
Smyčka for-in (ekvivalent foreach v PHP) se na procházení polem moc nehodí. |
||
hal_sk Profil |
#11 · Zasláno: 19. 5. 2008, 14:32:26 · Upravil/a: hal_sk
Stále nad tým dúmam.
- môžete mi toto ešte raz vysvetliť?: pole = ">"+document.f.jj.value+"<"; - v prvom kóde sa výsledok "pocet_pole" vypisoval cez "alert". Ale v druhom kóde sa vypisoval do tohto: <input type=text readonly name=pocet size=4> , ale ja tam nevidím žiadny "pocet_pole" |
||
Hooonza Profil |
#12 · Zasláno: 19. 5. 2008, 15:40:11 · Upravil/a: Hooonza
hal_sk
ad pole = ">"+document.f.jj.value+"<"; Uvažoval jsem takhle: funkce split funguje tak, že rozdělí řetěz pomocí zadaného výrazu. Když budu chtít řetěz "a-b-c-d-e-f-g" rozdělit touto funkcí pomocí "-", výsledkem bude pole "a", "b", "c", "d", "e", "f", "g". Tedy původní řetěz, který obsahoval 6x "-" funkce rozdělí na 7 dílů. Pokud by ale řetěz vypadal "a-b-c-d-e-f-", výsledkem bude pole "a", "b", "c", "d", "e", "f" - teda při vstupu 6x "-" bude výstupem 6 dílů. Ale, jak se teď dívám, ve skutečnosti je výstup z té druhé možnosti "a", "b", "c", "d", "e", "f", "" (zase 7 dílů) - takže o nic nejde, ty ohraničovací znaky tam dávat není nutné, stačí napsat pole = document.f.jj.value; ad <input type=text readonly name=pocet size=4> To nemusíte řešit, proměnné si můžete pojmenovávat podle sebe a podle libosti - hlavně se v nich potom musíte vyznat a nazamotat je, výstup potom také řešít podle svého :-) Definitivní výsledek je vždy uložen po výpočtu v hodnotě pocet_pole = pole.length-1;. Číslo, které nás zajímá, je uloženo v proměnné pocet_pole a teď záleží na nás, jak s ním chceme dále naložit: 1. Alert znamená, že vyskočí oznamovací okénko (=> pokud ho chcete ukazovat). 2. V druhém případě javascript přistoupí k hodnotě okénka document.f.pocet.value - to je to okénko s výsledkem ve formuláři (má jméno name=pocet) - a nastaví ji podle našeho výsledku, takže výsledek vidíme tam. Parametr readonly je parametrem pro HTML, způsobí, že do okénka nelze nic napsat přímo z klávesnice a okénko si lze jen přečíst. Způsobů, jak a kde si výsledek zobrazit, je hromada, vlastně záleží na nás, co s ním zamýšlíme a jak jej použijeme. |
||
hal_sk Profil |
#13 · Zasláno: 20. 5. 2008, 18:00:59
Tak už som to konečne pochopil. Díky za trpezlivosť.
|
||
Časová prodleva: 16 let
|
0