Autor Zpráva
Radek73
Profil
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
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
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
Radek73 [#3]:
Asi si si prvý článok odkazovaný v [#2] neprečítal, tam to máš pár vetami popísané dostatočne zrozumiteľne.
Radek73
Profil
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
Radek73 [#5]:
Skúšal si, podľa odkázaného odseku, použiť príklad s využitím vlastnosti innerHTML?

Tam na tom příkladu je to jenom s "Ahoj světe" ale když se tam dá proměnná?
No tak keď sa tam dá premenná, obsahujúca textový reťazec, tak sa vypíše obsah tej premennej.
Radek73
Profil
...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
Radek73:
Na odkaz v [#6] zabudni, to je len automatický odkaz na dokumentáciu, myslel som, stále, na prvý odkaz v [#2]. Čomu konkrétnemu z tých pár viet (v tom odkazovanom odseku) nerozumieš?
Radek73
Profil
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
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.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: