Autor Zpráva
Honzaik
Profil *
Čau, když chci udělat aby mi po 1s JS napsal "AHOJ" pak za další sekundu "Čau" a třeba za další sekundu "Nazdar"
Vymyslel jsem to takhle
setTimeout("document.write('AHOJ')", 1000);
setTimeout("document.write('Čau')", 2000);
setTimeout("document.write('Nazdar')", 3000);
Problém je, že mě to vždy ukáže jen ten 1. řádek a další už nefungují, asi to je nějakým omezením JS.
Rád bych věděl jestli tam mám někde chybu, nebo jestli by to šlo udělat jednodušeji a funční :D
Děkuji
High Voltage
Profil *
Je tu jeden problém. Pokud je již dokument načtený, a potom dostane příkaz document.write(), je jedno jestli po kliknutí nebo po načasování, prostě po načtení, nezačne psát do toho samého dokumentu, ale přepíše jej, takže stihne napsat jen AHOJ, protože ty skripty, které se ještě nestihly provést, jsou v tom starém dokumentu. Nic si z toho nedělej, takových chyb sem udělal spoustu. :-)
Když mi napíšeš, co přesně si chtěl udělat, možná ti pomůžu jinou metodou.
pcmanik
Profil
High Voltage:
Toto tu nieje chat, tak si prosim diskusiu nevytvaraj len medzi sebou a ziadatelom
Honzaik
Profil *
no prostě bych chtěl aby se mi v tom samém dokumentu napsalo Ahoj po 1s čau po další sekundě (tedy 2s od načtení stránky) a nazdar na 3s od načtení stránky, aby to vypadalo prostě Takhle
Ahoj Čau Nazdar
Witiko
Profil
Honzaik:
Proč ti to nefunguje zodpovídá místní FAQ:
Časté potíže, zajímavosti a poučné debaty » Psaní metodou document.write po načtení stránky maže stránku
Časté potíže, zajímavosti a poučné debaty » Nepoužívejte eval, ani jeho obdoby

Pokud chceš vpisovat do dokumentu, měň document.body.innerHTML nebo do document.body appendChilduj document.createTextNodey.
_es
Profil
Witiko:
měň document.body.innerHTML
To nie je dobrý nápad, obzvlášť, ak sa ten skript nachádza v elemente body.
Witiko
Profil
_es:
Nevidím problém. Samotný script element je nepotřebný po načtení scriptu, tzn. je možné bez obav přiřadit do innerHTML.
_es
Profil
Witiko:
Nevidím problém.
Môže nastať zmazanie niektorých skriptov z elementu body, rovnako nie je isté, ako sa prehliadač vysporiada s elementmi v elemente body pridanými cez JS a s ovládačmi udalostí, podobne ako tu.
Witiko
Profil
_es:
Všeobecně ano, nicméně v tomto konkrétním případě nic nehrozí.
Chamurappi
Profil
Reaguji na Witika:
Pokud má prakticky prázdnou stránku, tak nehrozí. Jinak je to ale slepá ulička, při čemkoliv složitějším se mu přepisování innerHTML u <body> pravděpodobně vymstí… a to třeba tak, že se přijde znovu zeptat :-)
Honzaik
Profil *
a jak teda to mám udělat? zaměnit document.write za co?
Witiko
Profil
Honzaik:
...
  <span id="kontejner"></span>
  <script>
    var kontejner = this.kontejner || document.getElementById("kontejner");
    setTimeout(function() {kontejner.innerHTML = "AHOJ";}, 1000); 
    setTimeout(function() {kontejner.innerHTML = "ČAU";}, 2000); 
    setTimeout(function() {kontejner.innerHTML = "NAZDAR";}, 3000);
  </script>
...

Chamurappi:
při čemkoliv složitějším se mu přepisování innerHTML u <body> pravděpodobně vymstí…
Tak až k tomu dojde, tak to budeme řešit. :-)
_es
Profil
Honzaik:
a jak teda to mám udělat? zaměnit document.write za co?
Rôzne alternatívy máš v odkazoch a príspevkoch.

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