Autor | Zpráva | ||
---|---|---|---|
lubosh Profil * |
#1 · Zasláno: 5. 5. 2007, 00:04:52
Ahoj,
mám dlouhé číslo (cenu) a potřebuji ji rozdělit od zadu po 3 místech, aby to bylo přehledněšjí. např. z čísla: 3456789 chci vypsat: 3 456 789 V PHP jsem to udělal: $cena = strrev((chunk_split(strrev($cislo),"3"," "))); Číslo se obrátí, oddělí po třech místech a znovu obrátí nazpět. Potřeboval bych to ale pomocí javascriptu. Děkuji |
||
Petroff Profil |
#2 · Zasláno: 5. 5. 2007, 17:30:26 · Upravil/a: Petroff
JS není tak bohatý na spec.funkce, takže pro výpis integer mi vyšly 3 zhruba na stejno (na nic jednoduššího jsem nepřišel).
Jedna z nich umí i záporná čísla. Máš to komplet s testovací stránkou; hlavně pozor na: - nutnost převést číslo na řetězec (pro předání funkci: formatx) - přejmenování fce /rekurze/ <html> <head><title>test</title></head> <meta http-equiv="Content-Type" content="text/html; charset=RTF-8"> <style> body {margin:4em; font-size:100%} label {width:21ex; float:left} input {width:25ex; text-align:right; margin: 0 8pt 14pt} #button {width:48ex; text-align:center; margin: 8pt 0} p { font-size:80%; color: gray}} </style> <script> var func="format1"; function zvolit(e){ func=e.name; e.select(); e.form.start.value = "ENTER ~ " + func; } function zpracuj(e) { e.form.vystup.value = eval(e.name+"(String("+Number(e.value)+"))") } /*===== 3 verze ====================================================================== =====*/ function format1(s) { var m=/(.*)(\d\d\d)$/.exec(s); return m?format1(m[1])+" "+m[2]:s; } function format2(s){ for(var res="",i=1; i<s.length+1; i++) res=(i!=s.length&&i%3==0?" ":"") + s.slice(-i).slice(0,1) + res; return res; } function format3(s){ var ss; return (s!=(ss=s.slice(-3)))?format3(s.slice(0,s.length-3))+" "+ss:s } /*==================================================================== =====================*/ </script> <body onload="document.forms[0][func].focus()"> <form onsubmit="this.vystup.focus();return false"> <label> Zadej číslo: [format1] </label> <input type=text size=20 name="format1" onfocus="zvolit(this)" onchange="zpracuj(this)"></input><br> <label> Zadej číslo: [format2] </label> <input type=text size=20 name="format2" onfocus="zvolit(this)" onchange="zpracuj(this)"></input><br> <label> Zadej číslo: [format3] </label> <input type=text size=20 name="format3" onfocus="zvolit(this)" onchange="zpracuj(this)"></input><br> <br> <label> Výsledek formátování: </label> <input type=text size=25 name="vystup" onfocus="this.form[func].focus()"></input><br> <input type=submit name="start" id="button" align="center"></input> </form> <p> Ovládání: [TAB] [Shift-TAB] [Enter] </p> </body> </html> |
||
lubosh Profil * |
#3 · Zasláno: 5. 5. 2007, 23:44:26
wow, děkuju mockrát
|
||
peta Profil |
#4 · Zasláno: 6. 5. 2007, 11:38:31
http://www.volny.cz/peter.mlich/www.htm#mssub19
http://www.volny.cz/peter.mlich/www.htm#msub8 mam pocit, ze na reference-info je na to i nejaka funkce. Jinak by to slo take treba t=""; cyklus (i=0;i<delka-3) t+=" "+x.substring(i-3,i) a tak nejak, aby se to poscitalo zezadu... |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0