Foros del Web » Programando para Internet » Javascript »

Duda basica con javascript asignando valores a atributos css

Estas en el tema de Duda basica con javascript asignando valores a atributos css en el foro de Javascript en Foros del Web. Hola. Mi duda es muy básica y no puedo resolver porque no funciona tengo una función javascript que arranca de la siguiente forma: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 26/07/2014, 15:14
Avatar de intiweb  
Fecha de Ingreso: mayo-2009
Ubicación: Capital Federal
Mensajes: 363
Antigüedad: 14 años, 11 meses
Puntos: 5
Duda basica con javascript asignando valores a atributos css

Hola.
Mi duda es muy básica y no puedo resolver porque no funciona

tengo una función javascript que arranca de la siguiente forma:

Código Javascript:
Ver original
  1. function mostrar(ide){
  2.     var tiempoActual    = 0;
  3.     var elem            = document.getElementById(ide);
  4.     elem.style.opacity  = 0;
  5.     elem.style.display  = 'block';

Luego les mostrare dos ejemplos distintos que continuarian la función y mi duda con respecto a ellos.

1)
Código Javascript:
Ver original
  1. window.alert(elem.style.opacity);
  2.         elem.style.opacity  +=0.5;
  3.         window.alert(elem.style.opacity);
  4.         elem.style.opacity  += 0.5;
  5.         window.alert(elem.style.opacity);

2)
Código Javascript:
Ver original
  1. window.alert(elem.style.opacity);
  2.         tiempoActual        += 0.5;
  3.         elem.style.opacity  = tiempoActual;
  4.         window.alert(elem.style.opacity);
  5.         tiempoActual        += 0.5;
  6.         elem.style.opacity  = tiempoActual;
  7.         window.alert(elem.style.opacity);

Bueno con el primer codigo el window.alert() muestra primero 0, luego 0.5 y luego no se porque de nuevo 0.5

El segundo es el que funciona bien, donde voy incrementando una variable y se la voy asignando al atributo opacity.

La pregunta es; porque el atributo opacity no funciona más de una ves con el operador +=. De hecho también probe cambiando este operador por el siguiente statement y tampoco anda .

Código Javascript:
Ver original
  1. elem.style.opacity  = elem.style.opacity + 0.5;

No entiendo este comportamiento raro. Alguien que sepa explicarmelo ?
__________________
un saludo..... . . .
  #2 (permalink)  
Antiguo 26/07/2014, 16:14
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Duda basica con javascript asignando valores a atributos css

Tienes que obtener el valor computado de la propiedad opacity utilizando el método getComputedStyle, pues así como empiezas, no se reconoce a dicho valor.

Código Javascript:
Ver original
  1. //Obtengo el valor computado del atributo 'opacity'
  2. op = Number(getComputedStyle(elem, null).getPropertyValue("opacity"));
  3. console.log(op); //1
  4.  
  5. op += 0.5; //1.5
  6. elem.style.opacity = op; //1.5
  7. console.log(elem.style.opacity); //1.5
  8.  
  9. op += 0.5; //2
  10. elem.style.opacity = op; //2
  11. console.log(elem.style.opacity); //2

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 26/07/2014, 16:20
Avatar de intiweb  
Fecha de Ingreso: mayo-2009
Ubicación: Capital Federal
Mensajes: 363
Antigüedad: 14 años, 11 meses
Puntos: 5
Respuesta: Duda basica con javascript asignando valores a atributos css

Ok. Gracias !
Eso resuelve una gran duda. Tengo que ponerme a pensar ahora.
Muchas gracias !!
__________________
un saludo..... . . .
  #4 (permalink)  
Antiguo 28/07/2014, 12:10
Avatar de intiweb  
Fecha de Ingreso: mayo-2009
Ubicación: Capital Federal
Mensajes: 363
Antigüedad: 14 años, 11 meses
Puntos: 5
Respuesta: Duda basica con javascript asignando valores a atributos css

Bueno.
Yo sigo con mis dudas. modifique el codigo para que funcione de la siguiente manera:

Código Javascript:
Ver original
  1. function mostrar(ide){
  2.    
  3.     var valActualizado  = 0;
  4.     var elem            = document.getElementById(ide);
  5.     elem.style.opacity  = 0;
  6.     elem.style.display  = 'block';
  7.  
  8.    
  9.     for(i = 5; i <= 80; i += 5){
  10.  
  11.         valActualizado += 0.05;
  12.         setTimeout((function(e,t) {e.style.opacity = t;})(elem,valActualizado),5000);
  13.     }
  14. }

Pero en ves de ver un progreso cada 5 segundos. Me muestra de inmediato el resultado final con el opacity en 0.8.

Alguien sabe por que ? no le encuentro respuesta
__________________
un saludo..... . . .
  #5 (permalink)  
Antiguo 28/07/2014, 15:02
Avatar de intiweb  
Fecha de Ingreso: mayo-2009
Ubicación: Capital Federal
Mensajes: 363
Antigüedad: 14 años, 11 meses
Puntos: 5
Respuesta: Duda basica con javascript asignando valores a atributos css

Bueno creo que ya descubri porque no funciona.
setTimeout no para el codigo hasta que pase el tiempo indicado y lugo ejecuta la funcion y sigue con el codigo.
Lo que hace es correr la funcion cuando pasa el tiempo indicado pero mientras espera ese tiempo continua con el resto del codigo.

esto lo vi probando el siguiente codigo:

Código Javascript:
Ver original
  1. function mostrar(ide){
  2.    
  3.     var valActualizado  = 0;
  4.     var elem            = document.getElementById(ide);
  5.     elem.style.opacity  = 0;
  6.     elem.style.display  = 'block';
  7.     window.setTimeout(function(){window.alert("setTimeout"); },10000);
  8.     elem.style.opacity  = 0.8;
  9.  
  10. }

y pudo ver que primero se ponia el opacity en 0.8 y luego el setTimeout
Saludos !!
__________________
un saludo..... . . .

Etiquetas: atributos, css, funcion, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:26.