Autor Zpráva
Alice
Profil *
Ahoj, potřebuju načíst do proměnné v JS hodnotu ze vstupního pole. Jak to mám udělat?
Na Jakpsatweb.cz to tam je načteno příkazem prompt(), ale to nechci...
Dík
Joker
Profil
Z textového políčka? Například pokud je to políčko:
<input type="text" id="policko" name="policko">

tak třeba takhle:
if(document.getElementById && document.getElementById("policko")) hodnota = document.getElementById("policko").value
else hodnota = undefined;
peta
Profil *
Alice
jakpsatweb - javascript - priklady - formulare
Vsechny hry mam na hodnotach zalozene. Pocitani skore.
http://www.volny.cz/peter.mlich/hry/hry.htm
Alice
Profil *
tak nevím...nějak mi to nejde.Mám tedy políčko.
<input type="text" id="policko" name="policko">

a potřebuju dostat jeho hodnotu (value?) to co do něj napíšu do proměnné y, která je ve scriptu (teť je tam ta 13ka)...
<script>

var y, text;
y = 13;
y = y * 2 * 7 * 11;
text = "Hezké číslo je " + y;
document.write(text);
</script>
Alice
Profil *
Možná to tu už vysvětlené je, ale fakt to nevidím....nechápu
Joker
Profil
Alice
Vadí Vám něco na tom skriptu co jsem psal ve své odpovědi? Podle mě dělá přesně to co chcete.

Vysvětlení:
Když si v objektovém modelu dokumentu najdete objekt příslušného políčka, jeho vlastnost "value" obsahuje tu hodnotu kterou chcete.
Políčko formuláře si najdete přes jeho ID pomocí metody document.getElementById().
Výsledek: hodnota = document.getElementById("policko").value;
Je to jednoduché, problém ale je, že některé prohlížeče (třeba staré IE) neznají document.getElementById() a vyhodí chybu. Takže musím zajistit, aby se to neprovedlo v prohlížečích, které tu metodu neznají. A pro jistotu ještě vyřeším i stav, kdy by prohlížeč nenašel to políčko.
Rozlišení je relativně jednoduché: u prohlížečů, které umí document.getElementById(), bude existovat atribut document.getElementById typu function. Takže prostě otestuju, jestli ten atribut existuje. A pak otestuju, jestli najde to dané políčko. Pokud ano, přiřadím hodnotu a pokračuju, v opačném případě můžu skončit anebo se ještě pokusit získat hodnotu políčka jinak, třeba přes document.all
Výsledný skript:

if(document.getElementById && document.getElementById("policko")) hodnota = document.getElementById("policko").value
else hodnota = undefined;

Pak by ještě bylo dobré zkontrolovat, jestli jsme nějakou hodnotu dostali:
if(!hodnota) alert("Někde je chyba");

Tak. Doufám, že teď už je to dostatečně okecané ;)
peta
Profil *
Alice
jakpsatweb - javascript - priklady - formulare

<form name="aaa">
<input type="text" name="policko">
</form>

<script>
var f,y, text;
y = 13;
y = y * 2 * 7 * 11;
text = "Hezké číslo je " + y;
f = window.document.aaa.policko;
f.value = text;
alert(text);
</script>

nebo misto radku:
<input type="text" name="policko">
->
<input type="text" id="policko">
a
function objGet(x)
{var d=document;if(typeof x=='string')
x=d.getElementById?d.getElementById(x):d.all?d.all[x]:d.layers?d.layer s[x]:null;
return x;}
a misto
f = window.document.aaa.policko;
->
f = objGet("policko"); //+definice funkce objGet(x) pro objekty pro ruzne prohlizece
Alice
Profil *
Dík za všechny rady. Podařilo se mi to, že v textovém políčku se mi zobrazilo číslo spočtené scriptem. To jsem alespoň pochopila.. Můj celý záměr byl ale hlavně takový, abych do něj zapsala já nějaké číslo a script by mi z tohodle čísla vypočítal číslo jiné...Prostě jak to v ukázkovém scriptu počítá. Dosadím 13ku a tu to vynásobý2,7 a 11 že výsledek je 2002. :)
Joker
Profil
Alice
No a kde je problém? Prostě to obrátíte, místo hodnotu do políčka budete kopírovat políčko do hodnoty
Alice
Profil *
:) Tak,už to bude...Hlavní funguje, ale jak mám udělat to, abych tu hodnotu v policku policko mohla přepisovat? Když tam teť hodnotu value="13" nezadám tak se mi tam objeví prázdné textové pole, do kterého sice zapisovat hodnoty můžu, ale už mi jí to nepřebere ten script... Próč, a jak to dodělat?
<form name="aaa">

<input type="text" name="policko" value="13">
<input type="text" name="policko1">
</form>

<script>
var f,y, text;
y = document.getElementById("policko").value;
y = y * 2 * 7 * 11;
text = "Hezké číslo je " + y;
f = window.document.aaa.policko1;
f.value = text;
</script>
Joker
Profil
Alice
Ach tááák! Už vím, kde je problém:
Javascript se provádí jen jednou, ve chvíli kdy se načítá stránka. Když to políčko pak přepíšete, skriptu už je to jedno, už skončil. Vy ale chcete skript provést znovu v závislosti na akci uživatele.
Od toho je v Javascriptu věc zvaná události. Objektový model dokumentu poskytuje různé události a každé události na každém prvku můžete přiřadit skript, který se při té události provede.
Vás tedy teď bude zajímat chvíle, kdy na tom políčku "policko" nastane událost "změna hodnoty", která se jmenuje onchange.

Takže z toho vašeho skriptu udělejte funkci, například vypocet():

<script>
function vypocet(){
var f,y, text;
y = document.getElementById("policko").value;
y = y * 2 * 7 * 11;
text = "Hezké číslo je " + y;
f = window.document.aaa.policko1;
f.value = text;
}
</script>


a potom řeknete políčku, že při události změna hodnoty se má provést funkce vypocet:
<input type="text" name="policko" value="13" onchange="vypocet">

Výpočet můžete navázat třeba i na kliknutí na tlačítko:
<button onclick="vypocet">Vypočítat</button>
Anebo přes odkaz:
<a href="javascript:vypocet()">Vypočítat</a>

Pro jistotu dejte skript před políčka, aby se náhodou nestalo to, že načítání stránky se nějak zasekne a vy změníte políčko dřív než se stáhne skript (což by způsobilo chybu)
A ještě pokud máte v políčku výchozí hodnotu, skript se neprovede hned na začátku (s výchozí hodnotou), ale provede se až teprve když uživatel udělá tu příslušnou akci, na kterou je navázaný.
Jestli chcete skript provést už na začátku, můžete skript pověsit třeba na událost onload toho formuláře anebo za formulářem tu funkci zavolat "ručně":
<form...>
...
</form>
<script type="text/javascript>
vypocet();
</script>
Joker
Profil
Alice
Ještě pár doporučení k tomu skriptu:
Pokud budete psát delší skripty s více proměnnými, pojmenovávejte je nějakým smysluplným jménem, jinak se v tom za chvíli utopíte.

Před "document.getElementById("policko").value" by bylo dobré si ověřit, jestli prohlížeč umí document.getElementById()
Vůbec nejlíp když si na načítání prvku napíšete vlastní funkci, tu pak můžete používat ve všech skriptech.

Příklad:
function nacti(jmeno){
// pro prohlížeče znalé document.getElementById to zkusíme použít
if(document.getElementById) return(document.getElementById("jmeno"));
// v IE 4-5 funguje document.all
if(document.all) return(document.all[jmeno]);
// případné další varianty by patřily sem
// když neuspějeme, vrátíme false:
return(false);
}

Funkce vypocet() by pak vypadala takhle (dovolím si přejmenovat proměnné):
function vypocet(){
var vstup, hodnota, vystup, text;
vstup = nacti("policko");
vstup = nacti("policko1");
// pokud načtení některého políčka neuspělo, skončíme
if(!vstup || !vystup) return(false);
hodnota = vstup.value;
hodnota = hodnota * 2 * 7 * 11;
text = "Hezké číslo je " + hodnota;
vystup.value = text;
}
Alice
Profil *
Joker
Děkuji za objasnění problému.
Alice
Profil *
jj, tak nevim, asi jsem to urychlia...nefunguje mi to. Jak tam vložim do toho scriptu tu funkci vypocen, tak to vůbec neukazuje hodnoty v policku1.
<form name="aaa">

<input type="text" name="policko">
<input type="text" name="policko1">
<button onclick="vypocet">Vypočítat</button>
</form>

<script>
function vypocet(){
var f,y, text;
y = document.getElementById("policko").value;
y = y * 2 * 7 * 11;
text = "Hezké číslo je " + y;
f = window.document.aaa.policko1;
f.value = text;
}
</script>
peta
Profil *
1. <button onclick="vypocet()">Vypočítat</button>

2.
y = document.getElementById("policko").value;
tj konstrukce
<input type="text" id="policko">

f = window.document.aaa.policko1;
tj konstrukce
<input type="text" name="policko1">
Coz mas uz zase spravne

3. Nastroje - konzola javascriptu, tam to pise chyby, to musis videt.


Ja pouzivam toto:
f = window.document.aaa.policko1;
f.value = text;
Ale trosku jinak jsem to napsal... f jako form
f = window.document.aaa;
f.policko1.value = text;
f.policko.value = "";
atd, proste objekty z toho formulare...
Ale to jen jako poznamku...
peta
Profil *
Joker
return(document.getElementById("jmeno"))
asi preklep :) "jmeno" jako string asi nebude fungovat
Toto téma je uzamčeno. Odpověď nelze zaslat.