Autor Zpráva
Michaela Š.
Profil
Dobrý den, můžete mi prosím někdo vysvětlit, proč mi toto nefunguje?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html lang="cz">
<head>
<title>My page</title>
<meta name="description" content="" />
<meta name="generator" content="Roden Web Editor"/>
</head>
<body>
Klikněte na tlačítko pro vypsání násobilky <br />
<input type="submit" value="Násobilka" onclick="Nasobilka()" />
<script type="text/javascript" >
function Nasobilka() {
var cislo=window.prompt("Pro jaké číslo chceš vypsat násobilku?")
for(i = 1; i < 11; i++) {
document.write(i+" x "+cislo+" = "+cislo*i)
document.write("<br>")
}
document.write("Obnovte stránku pro nové zadání")
}
</script>


</body>
</html>


Moderátor jenikkozak: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
_es
Profil
Michaela Š.:
Časté potíže, zajímavosti a poučné debaty » Psaní metodou document.write po načtení stránky maže stránku
juriad
Profil
Co ti na tom nefunguje? Nefunguje to obnovení stránky?
To je způsobeno nevhodným zápisem do stránky. Většinou není vhodné používat document.write.

Toho nekonečného načítání se můžeš zbavit pomocí zavoláním document.close(); po posledním document.write(...).
Michaela Š.
Profil
juriad:
Děkuji, jsem poleno...
_es
Profil
juriad:
Toho nekonečného načítání se můžeš zbavit pomocí zavoláním document.close(); po posledním document.write(...).
Nemôže, „posledné volanie document.write(...)“ vôbec nenastane, respektíve nastane len prvé.
juriad
Profil
_es:
Nerozumím. První document.write() způsbí, že se zahodí aktuální dokument a otevře pro zápis nový, protože aktuální dokument byl již zavřený. Do toho nového se postupně zapisuje následující sekvencí document.write() a postupně se dokument renderuje. Dokud není zavolán document.close() prohlížeč čeká na další přichozí data, proto se tváří jako nekonečné načítání.

Při běžném „provozu“ se při načítání stránky zavírá dokument automaticky koncem proudu dat ze serveru.
_es
Profil
juriad [#6]:
Sčasti máš pravdu, no k „dokumentu“ patria aj elementy script, teda aj tie sú zahodené, mylne som sa domnieval, že hneď, no čo som to testoval v najrozšírenejších prehliadačoch, vyzerá to, že aktuálny bežiaci kód sa ešte dokončí - možno to však pre niektoré prehliadače neplatí. Ak by bolo posledným príkazom funkcie Nasobilka volanie setTimeout, tak vyvolanie časovača po definovanom čase by už nenastalo, aj keď je dokument „otvorený“, lebo vtedy je už element script celý zrušený (doplnenie: v Chrome časovač vyvolaný bude). Volanie document.write pre uzavretý dokument skriptom z toho istého dokumentu nie je dobrý nápad, aj keď v tomto prípade to nejako čiastočne „funguje“. Okrem toho to v rôznych prehliadačoch môže fungovať rôzne.

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