Hola gente, sigo con problemas con 'mi librería'. Hasta ahora me funcionaba bien, pero he realizado cambios en una función para que ocupe menos (y sea más legible y preciso) y... ya no funciona. Primero pongo el código y luego el problema:
Código Javascript
:
Ver original// ...
getStyle : function(style){
var computedStyle;
if (typeof this.currentStyle != 'undefined')
computedStyle = this.currentStyle;
else
computedStyle = document.defaultView.getComputedStyle(this, null);
return computedStyle[style];
},
opacity : function(){
var isIE = document.all, estilos = isIE ? ['filter', 100] : ['opacity', 1], valor = isIE ? ['alpha(opacity=', ')'] : ['', ''];
if(arguments.length)
this.style[estilos[0]] = valor[0] + (arguments[0] * estilos[1]) + valor[1];
else
return P(this).getStyle('opacity');
return 1;
},
entrada : function(t){
var tempo = { 'lento' : 800, 'medio' : 500, 'rapido' : 200};
var tiempo = isFinite(t)?t:tempo[t], thix = P(this), incr = 20/tiempo;
thix.opacity(0);
var timer = setInterval(function(){
if(thix.opacity()>=1) timer = clearInterval(timer);
else{
thix.opacity(thix.opacity()+incr);
}
}, 20);
return P(this);
},
salida : function(t){
var tempo = { 'lento' : 800, 'medio' : 500, 'rapido' : 200};
var tiempo = isFinite(t)?t:tempo[t], thix = P(this), incr = 20/tiempo;
thix.opacity(1);
var timer = setInterval(function(){
if(thix.opacity()<=0) timer = clearInterval(timer);
else{
thix.opacity(thix.opacity()-incr);
}
}, 20);
return P(this);
},
// ...
Hasta ahora, la función opacity era así:
Código Javascript
:
Ver originalopacity : function(){
var isIE = document.all, estilos = isIE ? ['filter', 100] : ['opacity', 1], valor = isIE ? ['alpha(opacity=', ')'] : ['', ''];
if(arguments.length){
this.style[estilos[0]] = valor[0] + (arguments[0] * estilos[1]) + valor[1];
}else{
if(this.style[estilos[0]]){
return this.style[estilos[0]].match(/\d+(\.\d+)?/)[0]/estilos[1];
}else{
if(SS.find(this.tagName, estilos[0])){
return SS.find(this.tagName, estilos[0]).match(/\d+(\.\d+)?/)[0]/estilos[1];
}else{
if(SS.find('#'+this.id, estilos[0]))
return SS.find('#'+this.id, estilos[0]).match(/\d+(\.\d+)?/)[0]/estilos[1];
else{
for(var i=0, partir=this.className.split(' '); clase=partir[i]; i++){
if(SS.find('.'+clase, estilos[0]))
return SS.find('.'+clase, estilos[0]).match(/\d+(\.\d+)?/)[0]/estilos[1];
}
}
}
}
return 1;
}
},
Problemas:
En Chrome tengo un problema con el timing, porque la primera vez se ejecuta bien, pero a partir de ahí va cada vez más rápido; y además la función entrada no funciona (se queda con opacity:0 . Sólo funciona salida()). En IE directamente no funcionan ni una ni otra. ¿Qué está pasando? ¿Tanto me cambia el código la función nueva?
Saludos y gracias :D