Autor Zpráva
Kry5
Profil
zdravím,
mám takový problém zkoušel jsem si udělat dvě funkce, které by umožňovali skrývat a zobrazovat jakýkoli element na stránce. Trošku na způsob jejich ekvivalentů v jQuery. A nastali dva problémy. První platí pro obě funkce:

Mám funkci skryj()
function skryj(coSkryj,dobaSkryj) {
var pruhlednostSkryj = 1;
var pruhlednyFiltrSkryj = 100;
var pruhlednostIESkryj;
if (!dobaSkryj) {
dobaSkryjPrepoc = 0.1;
dobaSkryjPrepocIE = 10;
}
else {
dobaSkryjPrepoc = dobaSkryj / 100;
}
var zmizniInterval = setInterval(function() {
pruhlednostIESkryj = "alpha(opacity="+pruhlednyFiltrSkryj+")";
document.getElementById(coSkryj).style.opacity = pruhlednostSkryj;
document.getElementById(coSkryj).style.filter = pruhlednostIESkryj;
pruhlednostSkryj = pruhlednostSkryj - dobaSkryjPrepoc;
pruhlednyFiltr = pruhlednyFiltrSkryj - dobaSkryj;
if (pruhlednostSkryj <= 0) {
clearInterval(zmizniInterval);
document.getElementById(coSkryj).style.display = "none";
return true;
}
},100);
}


Kterou volám třeba takto:
skryj('zmizni');

Ale jde tam dodat ještě druhý atribut, který pak určuje rychlost skrývání. První atribut je id. Všude vše funguje perfektně, ale kvůli ie jsem tam zkusil dát filter, s dosazenou hodnotou, ale bohužel mi to nefunguje. V konzoli žádný error neni (ani chrome ani ie). Zvýrazněný je vše co se týká filteru.

A druhý problém nastává, když mám druhou funkci:
function zobraz(coZobraz,dobaZobraz) {
var pruhlednostZobraz = 0;
var pruhlednyFiltrZobraz = 100;
var pruhlednostIEZobraz;
if (!dobaZobraz) {
dobaZobrazPrepoc = 0.1;
dobaZobrazPrepocIE = 10;
}
else {
dobaZobrazPrepoc = dobaSkryj / 100;
}
document.getElementById(coZobraz).style.display = "block";
var zobrazInterval = setInterval(function() {
pruhlednostIEZobraz = "alpha(opacity="+pruhlednyFiltrZobraz+")";
document.getElementById(coZobraz).style.opacity = pruhlednostZobraz;
document.getElementById(coZobraz).style.filter = pruhlednostIEZobraz;
pruhlednostZobraz = pruhlednostZobraz + dobaZobrazPrepoc;
pruhlednyFiltr = pruhlednyFiltrZobraz + dobaZobraz;
if (pruhlednostZobraz >= 1) {
clearInterval(zobrazInterval);
return true;
}
},100);
}


Je skoro shodná, akorát pár upravenejch hodnot, ale bohužel jsem nemohl ještě vyzkoušet její funkčnost, protože mi to hlásí: Cannot read property 'style' of null na řádku 65 (zvýrazněn). V HTML volám:
zobraz('zobraz');

A níže mám:
 <div id="zobraz" style="display:none">Já nejsem a zobrazim se!</div>

Takže id je dobře. Napadlo mě, že by to neexistovalo kvůli display: none, ale někde jinde to nevadí. Fakt nevim.


Díky za pomoc
_es
Profil
Kry5:
Prosím. Nejde o složitý dotaz, ale já na to prostě nemůžu přijít :-).
Asi sa nikomu nechce zložito analyzovať, kde asi bude chyba v takom chaotickom kóde s takým zmäteným popisom.
To čakáš, že tu majú všetci v mozgu implementovaný interpréter JS a nejakým jasnovideckým spôsobom si domyslia zvyšok (HTML, CSS)?

Cannot read property 'style' of null
V čase spustenia toho kódu neexistuje element s takým id.

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: