Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] No funciona mi codigo

Estas en el tema de No funciona mi codigo en el foro de Javascript en Foros del Web. Tengo un bloque <div> que es un rectangulo azul de 50px por 30px, lo que quiero hacer es que mi funcion haga aumentar su width ...
  #1 (permalink)  
Antiguo 11/09/2014, 12:33
 
Fecha de Ingreso: septiembre-2014
Mensajes: 66
Antigüedad: 9 años, 7 meses
Puntos: 1
No funciona mi codigo

Tengo un bloque <div> que es un rectangulo azul de 50px por 30px, lo que quiero hacer es que mi funcion haga aumentar su width con un setInterval, que quede como una animacion..

escribi esto:
Código:
<html>
    <head>
        <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <link rel="stylesheet" href="newcss.css"/>
    </head>
    <body>
        <div id="bloque" class="bloque" onclick="start()"></div>
        <script>
           var bloque=document.getElementById("bloque"); 
           function move(element){
               element.style.width=(element.style.width+1)+'px';
           }
           function start(){
               var id=setInterval(move(bloque),10);
           }
        </script>
    </body>
</html>
la funcion start corre el setinterval con la funcion move(element) donde element representa el bloque que quiero modificar, pero no funciona. Lo unico que hace es modificar el width a 1 y no hace nada mas...
quiero saber porque
  #2 (permalink)  
Antiguo 11/09/2014, 13:02
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: No funciona mi codigo

El problema está en que con la forma element.style.width no puedes obtener el valor de su ancho. Para eso, necesitas utilizar el método getComputedStyle.

Código Javascript:
Ver original
  1. var bloque = document.getElementById("bloque");
  2.  
  3. function move(element){
  4.     var width = window.getComputedStyle(element, null).width;
  5.     width = parseInt(width) + 1;
  6.     element.style.width = width + 'px';
  7. }
  8.  
  9. setInterval(function(){
  10.     move(bloque);
  11. }, 10);

Como dicho método devuelve el valor junto con la medida, utilizo a la función parseInt para tomar la parte numérica. La función se ejecutará cada 10 milésimas de segundo y, en cada ejecución, irá incrementando el valor del ancho del elemento en 1.

Y para navegadores anteriores a IE 9, utiliza el método currentStyle.

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 11/09/2014, 13:20
 
Fecha de Ingreso: septiembre-2014
Mensajes: 66
Antigüedad: 9 años, 7 meses
Puntos: 1
Respuesta: No funciona mi codigo

Código:
           function move(element){
               var width=0;
               function frame(){
                   width++;
                   element.style.width=width+'px';
               }
               var id=setInterval(frame,10);
           }
y porque ahi si funciona? :c
  #4 (permalink)  
Antiguo 11/09/2014, 13:31
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: No funciona mi codigo

Porque estás asignando un valor, no lo estás tomando. Esa es la diferencia. Y no hace falta declarar una función dentro de otra, puedes trabajar con una función, como en el ejemplo que te indiqué.

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
  #5 (permalink)  
Antiguo 11/09/2014, 16:16
 
Fecha de Ingreso: septiembre-2014
Mensajes: 66
Antigüedad: 9 años, 7 meses
Puntos: 1
Respuesta: No funciona mi codigo

muchas Gracias

Etiquetas: funcion, html
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 21:11.