Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Javascript - po deaktivace elementu inputu počítat výslednou hodnotu

Dobrý den, nejsem moc odborník na javascript tak proto jdu sem potřebuju uělat jakýsi script který bude po deaktivace elementu inputu počítat výslednou hodnotu
zkusil jsem něco takového

<script>
function celkem(){
 var ks = document.getElementById("ks").value;
 var pocet = document.getElementById("cena").value;
 document.getelementbyid("celkem").value = ks * pocet
}
</script>
<table>
 <tr>
  <td><input type="text" name="pr_nazev" id="nazev"></td>
  <td><input type="text" name="ks" id="ks" onFocus="celkem();"></td>
  <td><input type="text" name="cena" id="cena" onFocus="celkem();"></td>
  <td><input type="text" id="celkem"></td>
 </tr>
</table>

bohužel toto mi nefunguje prosím o rady
Zmena predmetu, pôvodne: Javascript (los)

Předmět Autor Datum
jen dotaz, nepouzivate na webu nejakou knihovnu typu jQuery, MooTools, nebo treba Prototype?
antiS 06.08.2011 11:04
antiS
Ne nic
88sking 06.08.2011 11:05
88sking
ok... jeste jsem to nezkousel, ted hned nemam cas, ale vidim prvni chybu v poslednim radku skriptu:…
antiS 06.08.2011 11:09
antiS
dobrá to jsem dosud nevěděl díky za radu jinak jedná se o tento web platce.php a stále to nefunguje
88sking 06.08.2011 11:12
88sking
zjednodusene, dej tomu inputu s cenou opravdu id="cena" misto id="nazev" a zacne to fungovat ;) (+ t…
antiS 06.08.2011 11:18
antiS
<script> function celkem(){ var ks = document.getElementById("ks").value; var pocet = document.getEl…
antiS 06.08.2011 11:16
antiS
Okey kouknu se na to díky moc za rady :)
88sking 06.08.2011 11:24
88sking
Nojo, jenže ty máš navázaný na vstup do buňky, ne na výstup ("deaktivaci"). Zkus to takhle: <script…
JoDiK 06.08.2011 11:27
JoDiK
pravda, toho jsem si ani nevsiml ze tam ma onFocus :o) to je trochu nesmysl, pocitalo by to az pri k…
antiS 06.08.2011 11:34
antiS
zkusil jsem to a chrome hází toto Uncaught TypeError: object is not a function (anonymous function)p…
88sking 06.08.2011 11:38
88sking
<script> function celkem(){ var ks = document.getElementById("ks").value; var pocet = document.getEl…
martin.developer 06.08.2011 11:48
martin.developer
Nerad to řikám, ale stále to nejede a hlásí stejnou chybu jen ted s událostí keyup
88sking 06.08.2011 11:51
88sking
Jaký že to máte prohlížeč? Já testoval v Opeře a IE9 a bez problémů.
martin.developer 06.08.2011 11:52
martin.developer
Pomenuj rôzne funkciu "celkem" a identifikátor elementu "celkem". Edit: Ak to chceš celé zjednoduši…
los 06.08.2011 11:54
los
No jo, já vůl. Máš pravdu, já zapomněl, že některé prohlížeče můžou mít s touhle jmennou konvencí pr…
martin.developer 06.08.2011 11:57
martin.developer
Už to funguje díky hoši moc poslední
88sking 06.08.2011 12:03
88sking
<script>
function celkem(){
var ks = document.getElementById("ks").value;
var pocet = document.getElementById("cena").value;
document.getElementById("celkem").value = ks * pocet;
console.log(''+ks+'*'+pocet+' = '+ks*pocet+'');
}
</script>
<table>
	<tr>
		<td><input type="text" name="pr_nazev" id="cena"></td>
		<td><input type="text" name="ks" id="ks" onFocus="celkem();"></td>
		<td><input type="text" name="cena" id="cena" onFocus="celkem();"></td>
		<td><input type="text" id="celkem"></td>
	</tr>
</table>

vysvetlim:
1. problem bylů v tom ze si mel napsane getelementbyid a to neni funkce.. musis dodrzovat velikost pismen..
2. problem byl v tom, ze si mel 1. input s id="nazev" a javascriptem si dohledaval element s id "cena".. i pres to ze to tedy uz pocitalo, vzdy to vracelo 0 pac to element s id cena nenaslo (opravit tedy ID u 1. elementu).

ten 5. radek console.log(''+ks+'*'+pocet+' = '+ks*pocet+''); je jen logovani do konzole..

kdyz vyuzivas napr prohlizec firefox a k nemu plugin Firebug, tak ten v sobe ma konzoli a veskere chyby v JS se ti tam loguji a pote muzes lepe ladit. Dale si do konzole muzes davat nejake vystupy (coz je tento pripad). Pokud nechces ve firefoxu instalovat firebug, doporucuji prohlizec Chrome, ktery je pro vyvojare take skveli.. konzoli ma take a vyvolas ji klavesovou zkratkou CTRL+SHIFT+J.. spust si tedy konzoli v prohlizeci Chorme, nacti stranku a napis neco do inputu, pote ti uz bude jasne co console.log() dela ;) a uvidis ze se ti priste skripty budou ladit lepe, pac ti to pise i jakou mas chybu a na jakem radku pripadne ;)

Hodne stesti s zacatky v javascriptu ;)

Nojo, jenže ty máš navázaný na vstup do buňky, ne na výstup ("deaktivaci").
Zkus to takhle:

<script>
function celkem(){
var ks = document.getElementById("ks").value;
var pocet = document.getElementById("cena").value;
document.getElementById("celkem").value = ks * pocet
}
</script>
<table>
<tr>
<td><input type="text" name="pr_nazev" id="nazev"></td>
<td><input type="text" name="ks" id="ks" onChange="celkem();"></td>
<td><input type="text" name="cena" id="cena" onChange="celkem();"></td>
<td><input type="text" id="celkem"></td>
</tr>
</table>
<script>
function celkem(){
 var ks = document.getElementById("ks").value;
 var pocet = document.getElementById("cena").value;
 document.getElementById("celkem").value = (ks * pocet);
}
</script>

<table>
 <tr>
 <td>
 
 <input type="text" name="pr_nazev" id="nazev"/>
 
 </td>
 
 <td>
 
 <input type="text" name="ks" id="ks" onkeyup="javascript:celkem();"/>
 
 </td>
 
 <td>
 
 <input type="text" name="cena" id="cena" onkeyup="javascript:celkem();"/>
 
 </td>
 
 <td>
 
 <input type="text" id="celkem"/>
 
 </td>
 </tr>
</table>

Pomenuj rôzne funkciu "celkem" a identifikátor elementu "celkem".

Edit: Ak to chceš celé zjednodušiť, tak identifikátory vôbec nepotrebuješ. Vstupné prvky máš predsa určite v nejakom formulári, pomocou ktorého môžeš pristupovať ku elementom podľa name (form.meno_prvku, resp. form.elements.meno_prvku). Zjednoduší sa ti aj HTML kód aj JS kód.

Zpět do poradny Odpovědět na původní otázku Nahoru