| 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: 12 let
|
|||
0
).