Autor | Zpráva | ||
---|---|---|---|
Radek73 Profil |
#1 · Zasláno: 17. 6. 2014, 23:28:04 · Upravil/a: Moderátor (editace znemožněna) 19. 6. 2014, 09:08:11
Mám tady takový jednoduchý příklad zdrojového kódu v Javascriptu, jsem začátečník a nemůžu přijít na to, jak to udělat ( vše ostatní funguje dobře ) aby na poslední řádce tento program jen zopakoval "Ahoj"+ vložené jméno. Pomocí input mi to jde ( předposlední řádek ) ale ten poslední řádek pomocí volaného document.write prostě nejde a vůbec na to nemůžu přijít, co je špatně. Změním jedno, nastane zase jiná chyby ale ani po deseti způsobech se nemůžu dopracovat k výsledku.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Příklad na input v JS</title> </head> <body> <script language="JavaScript" type="text/javascript"> <!-- var i; function Jmeno( i ) { return k="Ahoj " + i; } var k; function Vystup ( k ) { document.write ( k ); } //--> </script> <form> <input Name="i" type="Text" size="20"><br><br> <input Name="btOk" type="button" value="Stiskni" OnClick="k.value=Jmeno ( i.value );"><br><br> <input Name="k" type="Text" size="20"><br><br> </form> <form> <script language="Javascript" type="text/javascript"> <!-- Vystup ( k ); //--> </script> </form> </body> </html> Poradíte mi někdo? |
||
_es Profil |
#2 · Zasláno: 18. 6. 2014, 00:16:34
Radek73:
Nejaký máš v tom zmätok: 1) Funkciu document.write nie je vhodné volať v reakcii na kliknutie: Časté potíže, zajímavosti a poučné debaty » Psaní metodou document.write po načtení stránky maže stránku.
2) Niečo iné je globálna premenná k , definovaná cez var k; , ktorá je v tomto prípade undefined a niečo iné je k , ku ktorému pristupuješ v onclick , tam je to objekt inputu s name=k , vďaka istej zvláštnosti kódu v atribútoch - Večný problém s ajax-om, ide vlastne o this.form.k , či bez použitia implicitného pomenovania this.form.elements.k .
3) Druhý script je spustený ešte vo fáze načítania stránky, no udalosť kliknutia nastane, logicky, až keď sa na tlačítko klikne, potom je síce premenná k prepísaná, no nikde už nie je jej hodnota použitá.
|
||
Radek73 Profil |
#3 · Zasláno: 18. 6. 2014, 13:05:24
A jak se to teda vlastně dělá když bych chtěl něco načíst příkazem INPUT a pak to třeba v nějaké změněné podobě vypsat - přijde mi že asi nejlepší je na to document.write nebo ne? Přijde to jednoduchý ale vůbec nevím jak to udělat.
|
||
_es Profil |
#4 · Zasláno: 18. 6. 2014, 13:41:31
|
||
Radek73 Profil |
#5 · Zasláno: 18. 6. 2014, 19:54:29
Tak nevím, moc jsem to nepochopil, promiň, ale našel jsem si něco podobného na Jakpsátweb pod Javascriptem už mi to jde udělat s prompt nebo confirm aby následovalo document.write ale s INPUT to asi není možné. Nebo šlo by naopak udělat aby vstup byl INPUT a výstup INPUT za předpokladu že by se nevypsal ten rámeček a vypadalo by to stejně jako výpis s document.write? Četl jsem to a moc jsem to nepochopil. Mně by stačilo kdyby mi někdo napsal jednoduchý příklad jak něco na stránce vložit, zpracovat a zase vypsat ale aby ten výstup vypadal jako normální písmo, ne v tom ohraničeném INPUTu. Tam na tom příkladu je to jenom s "Ahoj světe" ale když se tam dá proměnná? Pochopil jsem z toho přesně že ten skript se čte první takže to vypíše undefined, ale jak to udělat aby nejdřív přečetl nejdřív INPUT a pak až teprve ten skript - asi nejde.
|
||
_es Profil |
#6 · Zasláno: 18. 6. 2014, 20:09:18
|
||
Radek73 Profil |
#7 · Zasláno: 18. 6. 2014, 22:32:22 · Upravil/a: Moderátor (editace znemožněna) 19. 6. 2014, 09:10:24
...jenom jestli já nemám nějaký problém v tom programu HTML-Kit 292 v kterém všechno dělám, protože jsem tedy zkusil z té stránky o innerHTML opsat ten příklad:
<html> <head></head> <body> <div id="txt"> <script id="txt0"> x=0 </script> <noembed id="txt1"> 1 </noembed> <noframes id="txt2"> 2 </noframes> <noscript id="txt3"> 3 </noscript> <div id="txt4"> 4 </div> <div> <noscript id="txt5"> 5 </noscript> </div> <span id="txt6"> 6 </span> </div> <div id="innerHTMLtxt"></div> <div id="textContenttxt"><div> <script> for (i=0;i<7;i++){ x="txt"+i; document.getElementById(x).firstChild.nodeValue='&<>' } document.getElementById("innerHTMLtxt").textContent=document.getElementById("txt").innerHTML document.getElementById("textContenttxt").textContent=document.getElementById("txt").textContent </script> <body> </html> A hlásí mi to: Řádek 23, znak 5 - Nelze nastavit vlastnost nodeValue nedefinovaného nebo nulového odkazu. A protože si myslím, že by ten příklad fungovat měl, tak se zamýšlím, jestli nemám nějakou chybu v tom programu HTML-Kit 292? Funguje někomu jinému tenhle příklad nebo taky nefunguje? Moderátor jenikkozak: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na
![]() |
||
_es Profil |
#8 · Zasláno: 18. 6. 2014, 23:15:55
|
||
Radek73 Profil |
#9 · Zasláno: 19. 6. 2014, 19:29:25
No, pokud dosadím proměnnou za "Ahoj světe" tak nejsem schopný ten program zprovoznit - buď mi to hlásí neznámý objekt anebo zase vypisuje undefined. Nemohl bys myslím, že by to bylo nejlepší řešení, tady mi na pár řádek napsat program s INPUT a document.write nebo něčím podobným pracujícím s proměnnou. Zatím jsem totiž ještě začátečník a nejde mi to.
|
||
_es Profil |
Radek73 [#9]:
Stále len píšeš, že ti to vraj nejde a pod. a pritom sa nevieš poriadne vyjadriť, čo to má vlastne robiť. Skúsim si tipnúť, čo chceš: <input id=vstup size=20> <input type=button value=Stiskni id=tlacitko> <div id=vystup></div> <script> var vstup = document.getElementById("vstup"), vystup = document.getElementById("vystup"); document.getElementById("tlacitko").onclick = function(){vystup.innerHTML = vstup.value}; </script> |
||
Radek73 Profil |
#11 · Zasláno: 19. 6. 2014, 21:00:08
Přesně si trefil, chtěl jsem přesně tohle, zařadím si to do knihovničky programů, zkoušel jsem to, funguje to. Díky.
|
||
Časová prodleva: 11 let
|
0