Autor | Zpráva | ||
---|---|---|---|
jacbar Profil |
#1 · Zasláno: 18. 7. 2006, 21:27:44 · Upravil/a: jacbar
napsal sem si prográmek na házení kostkama, ale při tom, kdy by se mi měly vypsat výsledky tak se vypíšou nevimproč na novou stránku, a navíc se na ní donekonečna něco načítá. Proč to nefunguje? (pozn. je to zkrácená verze původního skriptu, ale dělá tu samou chybu)
<form name="form"> <input name="Xd" maxlength="2" size="2" value="1"> <select name="dX"> <option>d2 <option>d3 <option>d4 <option>d6 <option>d8 <option>d10 <option>d12 <option>d20 <option>d100 </select> <input type="button" value="hoď" onclick="hod ();"> <!-- Sem se mi leda povedlo udělat onclick="history.go(0);" ale pak 1) se načítá celá stránka 2)Je to prasárna--> </form> <script> var Xd=document.form.Xd.value; var dX=document.form.dX.value.replace(/d/g,''); var a=0; function hod () { for(z=0;z<Xd;z++){ document.write(b=Math.ceil(Math.random()*dX)); document.write(", "); a+=b; } document.write("<hr>Celkem: <strong id=\"a\">"+a+"</strong>"); } </script> dík Jáchym |
||
Peca Profil |
#2 · Zasláno: 19. 7. 2006, 00:41:50
Zkus dát var Xd a dX až dovnitř funkce hod(); Netestoval jsem to, ale mohl by v tom být problém.
|
||
Chamurappi Profil |
#3 · Zasláno: 19. 7. 2006, 01:11:11
Reaguji na jacbar:
Viz můj příspěvek u jiného tématu. |
||
vinnetou Profil * |
#4 · Zasláno: 19. 7. 2006, 07:55:25
takhle mi to funguje bez problemu:
problem byl podle mne v tom, ze se ti nenacitala hodnota dX. |
||
peta Profil * |
#5 · Zasláno: 19. 7. 2006, 09:57:09
jacbar
co treba takto? neco takovehoto: <script> function hodKostky(xForm) { var n; n=xForm.kostka.value; n=Math.floor(Math.random()*n)+1; xForm.vysledek.value=n; return false; } </script> <form name="form" action="#" onsubmit="return hodKostky(this)"> <select name="kostka"> <option>2 <option>3 <option>4 <option>6 <option>8 <option>10 <option>12 <option>20 <option>100 </select> <input type="submit" value="hod"> <input name="vysledek" size="5" readonly="readonly" onfocus="blur()"> </form> vinnetou Ceil, to je podle mne chybna funkce, to zaokrouhluje 0.1 na 1 a 0 na 0, takze ceil(random(3)) dostanes 0 1 2 3 :) |
||
peta Profil * |
#6 · Zasláno: 19. 7. 2006, 10:01:30
oprava, sem si nevsiml, ze mas ten select bez value
<select name="kostka"> <option value="2">d2 <option value="3">d3 <option value="4">d4 <option value="6">d6 <option value="8">d8 <option value="10">d10 <option value="12">d12 <option value="20">d20 <option value="100">d100 </select> |
||
jacbar Profil |
#7 · Zasláno: 19. 7. 2006, 18:24:34
díky za voboje
pár poznámek: -jako funkce to nejde -zaokrouhlovat se to má fakt nahoru -ty Déčka tam taky mám akorát je replacuju ničim (místo zadávání value), akorát sem sem to nepsal |
||
peta Profil * |
#8 · Zasláno: 19. 7. 2006, 20:56:01
jacbar
"zaokrouhlovat se to má fakt nahoru " no ja, ale random(5) = 0 0.x 1 1.x 2 2.x 3 3.x 4 4.x 5 5.x ceil = 0 1 1 2 2 3 3 4 4 5 5 6 vis, co tim chci rici? 1-5 je 2x a 0 a 6 1x |
||
jacbar Profil |
#9 · Zasláno: 19. 7. 2006, 22:09:17
Math.ceil(Math.random()*dX) máš 1 až X každý se stejnou pravděpodobností. A je to.
|
||
Chamurappi Profil |
#10 · Zasláno: 19. 7. 2006, 22:35:15
Reaguji na jacbar:
On sice peta neumí moc počítat, ale má pravdu v tom, že je zde jistá extrémně malá šance, že Math.ceil(Math.random()*dX) vrátí nulu. Metoda Math.random() totiž vrací náhodné číslo od nuly (včetně) do jedničky (vyjma). |
||
Časová prodleva: 3 dny
|
|||
peta Profil * |
#11 · Zasláno: 22. 7. 2006, 17:09:49
Chamurappi Co mas s mymi pocty?
jacbar Si precti, co dela funkce ceil, dobra literatura je: http://javascript-reference.info |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0