Autor Zpráva
tuzticzka
Profil
Ahoj, mám takovýto problém: Nadefinoval jsem si funkci, která mi má spočítat počet SPAŃů s barvou Navy na pozadí. Problém se vyskytuje až při druhém zavolání funkce...
Tady jsou úryvky zdroje v JS:
//Tyhle dvě deklarace jsou nepodstatné pro chod funkce
csirka=1;
cvyska=1;

function s(sloupec) {
sstart_h=sloupec;
konec_h=sloupec+csirka*5*cvyska*5-csirka*5;
docasnaP=0;
kod_h="";
barva="";
s=0;
konec_c=csirka*5;
cc="";
for(a=sstart_h;a<=konec_h;a+=konec_c) {
//zjištování informace o políčku
obj=document.getElementById('n'+a);
barva=obj.style.backgroundColor;
//když zjištěná barva souhlasí proměnná s dostane nějakou hodnotu
if(barva=="navy") s=1;
else s=0;
//tohle tady je jenom abych měl přehled co se kde děje
cc+=a+"="+barva+", s="+s+"\n";
}
alert(cc);
}

HTML:
<span id="n0" style="background-color: navy"><span>
<span id="n1" style="background-color: navy"><span>
<span id="n2" style="background-color: navy"><span>
<span id="n3" style="background-color: navy"><span>
<span id="n4"><span>
<span id="n5"><span>
<span id="n6"><span>
<span id="n7"><span>
<span id="n8"><span>
<span id="n9"><span>


Vážně to nechápu, v JS napíšu s(0);s(1);(nebo pořád tu samou s(0);s(0);) a první spuštění je OK, ale u toho dalšího zavolání to najednou vyhodí chybovou hlášku, že na řádku 1 a znaku 1 Byla očekávána funkce(na určeném místě nic samozřejmě nic není). Tak co, nevíte co jsem tam napsal špatně? Díky Martin
Oswald
Profil

s=0;


Tíhmle si přemažeš globální proměnnou s, která do té doby byla odkazem na funkci. Proto je chyba uaž při druhém zavolání. Pokud chceš ve funkci vytvářet lokální proměnné, musíš je deklarovat:



var s=0;
tuzticzka
Profil
To snad není možné! Jedno chybějící var a taková hromada problémů. Opravdu to funguje :))
Oswald - díky moc, taková drobnost by mě ani ve snu nenapadla
Tomik
Profil
A to má jen pár řádků, už si někdy ladil script třeba o více jak 1000ti řádcích? To je pak legrace... ;)
Leo
Profil
"Pokud chceš ve funkci vytvářet lokální proměnné, musíš je deklarovat: var s=0;"

Nebo jeste lip, nepouzivat dvakrat stejny identifikator promenne (do cehoz spadaji i nazvy funkci). Leo
tuzticzka
Profil
Takže pokud jsem to dobře pochopil, var je dobré používat (i preventivně) při deklaraci jakékoliv proměnné, jo?
Leo
Profil
"Takže pokud jsem to dobře pochopil, var je dobré používat (i preventivně) při deklaraci jakékoliv proměnné, jo?"

To v kazdem pripade. Leo
Toto téma je uzamčeno. Odpověď nelze zaslat.

0