Autor Zpráva
blahapet
Profil
Ahoj, mám malý dotaz... Proč příklad na tuto metodu (funkci) uvedený zde funguje. Ale jakmile ten kus JS kódu bych chtěl vyjmout z HTML a vložit klasicky do externího JS souboru, tak to nefunguje... Snad jsem to napsal správně.
Lze to nějak obejít?

Díky moc, Petr.
Radek9
Profil
blahapet:
Z takovéhohle popisu nic nepoznáme. Prosím o odkaz na živou ukázku.
blahapet
Profil
Omlouvám se. Šlo mi o to proč tohle funguje, ale když tento kus kódu:

<script>
document.getElementById("myBtn").addEventListener("click", function(){
  document.getElementById("demo").innerHTML = "Hello World";
});
</script>

Vyjmu z toho toku HTML a chci ho vložit do ex. javascriptu do hlavičky souboru:

<head>
... ... ...
<script src="/javascript/soubor.js" type="text/javascript"></script>
... ... ...
</head>

Tak to nefunguje. Zkrátka když ten výše uvedený JS kód umístím do souboru /javascript/soubor.js, tak to nefunguje... Snad jste mě dobře pochopili.

A vzápětí jsem zjistil, že nefunguje ani to, když v tom HTML kódu ten vloženej JS kód umístím nad:

<button id="myBtn">Try it</button>

Díky za Vaše rady.
Radek9
Profil
blahapet:
Protože to dáváš do <head>. V tu chvíli, kdy se tam ten script spustí, tak ten button s id myBtn ještě neexistuje, protože se zatím nezačalo vůbec tělo dokumentu parsovat. Dej ten uvedený script na konec <body> a ušetříš si problémy.

<body>
  ...
  <button id="myBtn">Try it</button>
  ...
  <script src="/javascript/soubor.js"></script>
</body>
blahapet
Profil
Díky moc...
RastyAmateur
Profil
Ještě bych jen doplnil, že existuje i load event a DOMContentLoaded event (rozdíl si přečti v dokumentaci). Můžeš pak všechen JS nechat normálně v hlavičce a potřebný kód (typicky ten, co se vztahuje právě k obsahu, využívá ty elementy z DOMu) vložíš do tohoto listeneru.
blahapet
Profil
Díky, prozkoumám.

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:

Prosím používejte diakritiku a interpunkci.

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

0