Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] problema con variable / bucle for

Estas en el tema de problema con variable / bucle for en el foro de Javascript en Foros del Web. Hola, Soy muy nueva en esto, así que tal vez la pregunta es muy obvia. Éste es el código que da problemas: Código: function iniciar(){ ...
  #1 (permalink)  
Antiguo 29/07/2013, 11:38
 
Fecha de Ingreso: julio-2013
Ubicación: Barcelona
Mensajes: 3
Antigüedad: 11 años, 2 meses
Puntos: 0
Pregunta problema con variable / bucle for

Hola,

Soy muy nueva en esto, así que tal vez la pregunta es muy obvia. Éste es el código que da problemas:

Código:
function iniciar(){
  var botones, x
  botones=document.querySelectorAll('#barra ul li');
  for(x = 0; x < botones.length; x++){ 
   botones[x].addEventListener('mouseover',cambiar)
  function cambiar(){
   botones.className = "sombra"
     };
   };
  }
addEventListener('load', iniciar);
Quiero que al colocar el ratón sobre cualquiera de los elementos li, éste adquiera la clase sombra. Simplemente es una práctica de un ejemplo de utilidad de className. ¿Alguien me puede decir por qué no me reconoce a botones[x] dentro de la función cambiar? (en cambio si la reconoce cuando se dispara el evento mouseover).

¡gracias de antemano!
  #2 (permalink)  
Antiguo 29/07/2013, 12:19
 
Fecha de Ingreso: febrero-2004
Ubicación: Guatemala
Mensajes: 117
Antigüedad: 20 años, 7 meses
Puntos: 2
Respuesta: problema con variable / bucle for

Lo que veo es que en la funcion cambiar botones no existe, la tenias que enviar como parametro.

saludos
jlh
  #3 (permalink)  
Antiguo 29/07/2013, 12:54
 
Fecha de Ingreso: julio-2013
Ubicación: Barcelona
Mensajes: 3
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: problema con variable / bucle for

¿Podrías ser un poco más explícito? ¿Más para novatas?

No veo cómo hacerlo en este caso.

¡Gracias!
  #4 (permalink)  
Antiguo 29/07/2013, 13:50
 
Fecha de Ingreso: febrero-2004
Ubicación: Guatemala
Mensajes: 117
Antigüedad: 20 años, 7 meses
Puntos: 2
Respuesta: problema con variable / bucle for

Ok, no se si dentro de la funcion cambiar() el objeto o variable "botones" exista, puede probar dos cosas:

1. dentro has un alert("hola") para ver si al menos ingresa
2. en firefox hay un plugin que te permite debuguear los resultados y te dira si hay error de sintaxis a nivel javascript.

saludos
jlh
  #5 (permalink)  
Antiguo 29/07/2013, 16:07
 
Fecha de Ingreso: julio-2013
Ubicación: Barcelona
Mensajes: 3
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: problema con variable / bucle for

¡Lo he logrado!
Sí, si coloco un alerta dentro de la función cambiar, lo reconocía, pero es como si las variables dentro de la función estuvieran fuera de su ámbito, cosa que no acabo de entender. Si dentro del alert pongo, por ejemplo, el mensaje (botones[1]) se muestra el texto 'undefined' en la alerta.
En Chrome puse un breakpoint dentro de la función, y al evaluar las variables en la cónsola, devuelve ésto:
botones: MouseEvent
botones[x]:<not avalable>
x: <not avalable>

Pero también me dio una pista que no sabría explicar ahora y se me ocurrió sustituir dentro de la función la referencia botones[x] con this . ¡y funcionó!
Así que la mejoré para que al salir el ratón del elemento elimine la clase sombra. El resultado es éste, por si sirve a alguien:

Código Javascript:
Ver original
  1. function iniciar(){
  2.   var botones, x
  3.   botones=document.querySelectorAll('#barra ul li');
  4.   for(x = 0; x < botones.length; x++){
  5.    botones[x].addEventListener('mouseover',cambiar)
  6.    botones[x].addEventListener('mouseout',volver)
  7.  
  8.  function cambiar(botones){
  9.   this.className='sombra'
  10.     };
  11.   };
  12.  function volver(botones){
  13.   this.className='null'
  14.     };
  15.    };
  16. addEventListener('load', iniciar);

Yve - Muy contenta con el resultado :)

Gracias jluishg por la paciencia.
  #6 (permalink)  
Antiguo 30/07/2013, 18:14
 
Fecha de Ingreso: febrero-2004
Ubicación: Guatemala
Mensajes: 117
Antigüedad: 20 años, 7 meses
Puntos: 2
Respuesta: problema con variable / bucle for

Que alegria haberte ayudado.
__________________
Saludos cordiales
Juan Luis Herrera
IT Guatemala CA

Etiquetas: ambito, variables
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:21.