Autor Zpráva
Martinik
Profil *
Ahoj, začátečník žádá o pomoc s něčím pravděpodobně banálním. Je to velice prostý script, ale opravdu nevím, proč nefunguje. Potřebuji aby se po spuštění na stránce po sobě zobrazili tři řetězce uvnitř divu. Použil jsem setInterval, ale nechce mi to běhat. Nevíte, v čem je zakopanej pes?
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <title>Testovací stránka</title>
  </head>
  <body style="text-align: center;" onLoad="noFlash()">
  
<script type="text/javascript">
var dynText = document.getElementById("dynamic_text").innerHTML;
var x = 0;
var poleTextu = ["<h1>Vítejte...</h1>","<h2>Vítejte napodruhé</h2>","<h3>A vítejte napotřetí</h3>"];

function noFlash() {
var mujInterval = setInterval("zmenText()", 2000);
}

function zmenText() {
if(x == 2) {clearInterval(mujInterval);}
dynText = poleTextu[x];
x+=1;
}
</script>

<div id="dynamic_text">
</div>

  </body>
</html>
Davex
Profil
1. V okamžiku volání metody document.getElementById("dynamic_text") ještě element #dynamic_text neexistuje, protože je až za skriptem.
2. Funkce zmenText() nemá přístup k lokální proměnné mujInterval ve funkci noFlash().
3. Měníš hodnotu proměnné dynText a nikoliv obsah elementu #dynamic_text.

Ke zprovoznění nefunkčních skriptů používej chybovou konzoli prohlížeče a doplněk Firebug ve Firefoxu.

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