Autor Zpráva
Jcas
Profil *
ukazka kodu
function zeslab() {
if (e.opacity > 0) {
od = e.opacity;
//from = e.filter: alpha(opacity);
e.opacity = od - 0.1;
//e.filter: alpha(opacity) = from - 50);
setTimeout("zeslab()", 50);}
else { zmen(); }
};


function zesil() {
if (e.opacity < 1) {
od = e.opacity;
alert(od);
e.opacity = od + 0.1;
setTimeout("zesil()", 50);};
}


Nevím proč, ale zesilování nefunguje. Zeslabení funguje skvěle, ale zesílení ne. Při prvním zavolání funkce dojde k zesílení opacity z 0 na 0.1, ale dál už ne. pak stále vyskakuje alert s 0.1.

Nevíte někdo co s tím. Dále vídíte zakomentovaný pokus nastavit to pro explorer, ale to přestane fugovat úplně, takže jestli mi někdo napíše, jaká je správná syntaxe pro ME a jak to spojit, aby byl script univerzální, budu vděčnej. děkuji
fajzen
Profil
Jcas:
možno existuje aj elegantnejšie riešenie, ale toto funguje aj vo FF, Chrome, Opere aj IE (a asi aj inde)
<script>
var timeout;

function zesil(id)
{
	var el = document.getElementById(id);
	var op = getOpacity(el);

	if(op < 1.0) {
		op += 0.05;
		if(op > 1) op = 1.0;

		el.style.opacity = op;
		el.style.filter  = 'alpha(opacity=' + (op * 100) + ')';

		clearTimeout(timeout);
		timeout = setTimeout(function() { zesil(id); }, 50);
	}
}

function zeslab(id)
{
	var el = document.getElementById(id);
	var op = getOpacity(el);

	if(op > 0.0) {
		op -= 0.05;
		if(op < 0.0) op = 0.0;

		el.style.opacity = op;
		el.style.filter  = 'alpha(opacity=' + (op * 100) + ')';

		clearTimeout(timeout);
		timeout = setTimeout(function() { zeslab(id); }, 50);
	}
}

function getOpacity(el)
{
	var op = parseFloat(el.style.opacity);

	if(isNaN(op)) {
		try {
			op = parseInt(el.style.filter.substr(14));

			if(isNaN(op))
				return 1.0;
			else
				return op / 100;
		} catch(err) {
			op = 1.0;
		}
	}

	return op;
}
</script>



<div style="width:100px;height:100px;background-color:black;" id="element">&nbsp;</div>

<input type="button" onclick="zesil('element');" value="Zesil">
<input type="button" onclick="zeslab('element');" value="Zeslab">


To clearTimeout je tam preto, aby to nezblblo, keď počas efektu klikneš na ďalšie tlačítko
Ten problém so zosílením si mal kvôli tomu, že si nepoužil parseFloat, skript tú hodnotu nebral ako reálne číslo ale reťazec (si myslím)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0