Autor Zpráva
DarkMeni
Profil
Zdravím, zkoušim vymyslet nějakou funkci na ztmaneví (nebo spíš postupné zneviditelnění) elementu, zneviditelnění se mi povedlo nějak dát dohromady jenže když nastavim aby se po odjetí myší pomalu zase zviditelnil tak se mu už něco nelíbí, konkrétně toto:
Varování: Očekáván konec hodnoty, ale nalezeno „0.02“. Chyba při parsování hodnoty „opacity“. Deklarace vynechána.
Zdrojový soubor: file:///C:/Users/DarkMeni/Desktop/Scripts/tester.html
Řádek: 0

Skript vypadá asi takto:
FadeSTATE = false;
function Fade(Id,State){
	var Element = document.getElementById(Id);
	if(State=='up' && FadeSTATE=='up'){
		var CurrentOpacity = Element.style.opacity;
		if(CurrentOpacity*100!=100){
			Element.style.opacity = CurrentOpacity + 0.02;
			var Continue = true;
		}else{
			var Continue = false;
		}
	}else if(State=='down' && FadeSTATE=='down'){
		var CurrentOpacity = Element.style.opacity;
		if(CurrentOpacity*100!=0){
			Element.style.opacity = CurrentOpacity - 0.02;
			var Continue = true;
		}else{
			var Continue = false;
		}
	}else{
		var Continue = false;
	}
	if(Continue){
		setTimeout("Fade('"+Id+"','"+State+"');",60);
	}
}

A volám ho tímto
<div style="width:50px;height:50px;opacity:1.0;background-color:#f00;" onmouseover="FadeSTATE='down';Fade(this.id,'down');" onmouseout="FadeSTATE='up';Fade(this.id,'up');" id="tf"></div>

Jak to že zmizení funguje, a u zviditelnění se mu něco nelíbí a kódy jsou skoro stejné, rozdíl je jen ten, že u zmizení se opacity odečítá a u zviditelnění se má přičítat.
* (Zkoušim to v Mozzile Firefox)
Sir Tom
Profil
DarkMeni:
Zdravím, tato funkce již existuje v JS knihovně jQuery.
Podívej se na příklad.
Moderátor Chamurappi: Už jsem odtud jeden takový spam mazal. Ptá se, kde dělá chybu, nikoliv zda má celý svůj skript zahodit a vyměnit za osmdesátikilový balík.
pcmanik
Profil
Sir Tom:
Mam pocit, ze DarkMeni nema zaujem o kniznicu, ale o zfunkcnenie skriptu...
Sir Tom
Profil
DarkMeni:
Taky se můžeš zaměřit na to varování. Skript chce nalézt hodnotu opacity, ale nalezne pouze 0.02 (číslo, text?). (Je možné, aby opacity mělo hodnotu v setinách? Myslím, že ne, ale ruku do ohně bych za to nedal.) Zkus použít místo 0.02 hodnotu 0.1 a koukej, jestli to zafunguje.
Chamurappi
Profil
Reaguji na DarkMeniho:
Všude, kde čteš aktuální Element.style.opacity, přidej parseFloat.


Reaguji na Sira Toma:
Je možné, aby opacity mělo hodnotu v setinách? Myslím, že ne
Tím jako myslíš, že je možné nastavovat průhlednost jen po desetinových skocích? Jaká by byla motivace k takovému omezení?
Sir Tom
Profil
Chamurappi:
Tím jako myslíš, že je možné nastavovat průhlednost jen po desetinových skocích?
Ano, myslím, ale nevím, jaká by byla motivace mít takové omezení. Dle mě styl opacity má omezený počet hodnot (pokud by se tam mohlo zadávat číslo 0.015427704, tak pak by to asi nebylo moc efektivní, páč des. čísel je nekonečno.)
panther
Profil
Sir Tom:
pokud by se tam mohlo zadávat číslo 0.015427704, tak pak by to asi nebylo moc efektivní, páč des. čísel je nekonečno.
proč neefektivní? Co sem do toho pleteš počet desetinných čísel? A jak to souvisí s neefektivitou opacity?

Příště raději nemysli a než něco napíšeš, nejprve si to zkus. Nebo si nafackuj.
Sir Tom
Profil
panther:
Klídek. Řekl jsem, že nevím, ale že to možný je (nicméně jsem si předtím procházel několik stránek o opacity a díval se, zda-li tam mají setinové hodnoty - nenašel jsem).
Protože málokdo (respektive jeho oči) by poznal rozdíl mezi 0.02 a 0.03.
Chamurappi
Profil
Reaguji na Sira Toma:
tak pak by to asi nebylo moc efektivní, páč des. čísel je nekonečno
Mít nekonečno možných hodnot je neefektivní?
Prohlížeče sice mají určité limity, ale rozhodně ne u desetin.

Protože málokdo (respektive jeho oči) by poznal rozdíl mezi 0.02 a 0.03.
To by byl směšný důvod pro ignorování setin :-)
Jde snadno vyrobit situaci, při které ten rozdíl viditelný bude. Je-li každá složka barvy vyjádřená jedním bajtem, pak mezi 2% červenou a 3% červenou jsou ještě dvě další zobrazitelné červené.
DarkMeni
Profil
Opět zdravím, děkuji všem co se mi pokusili pomoct opravit ten skript, a parseFloat to nakonec vyřešil, děkuji :)

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