Duda rara con Javascript

Frezz

He heco un código para un problema no, pero hay un comportamiento que no temrino de entender, he estado tocando 4 movidas y de repente ha funcionado tal y como quería, la parte en cuestión es , cuando creo la variable "id" y le doy de valor "undefined", el objetivo es que onload se cargue por defecto como activa la pestaña 1, y para diferenciar pues hice eso, loq ue no entiendo es que pienso que lo tengo mal porque al entrar en "estilar" id debería seguir siendo undefined y siempre debería entrar el en if, pero por arte de magia al llamar a la función desde un evento ya no es undefined

Es "id" algún tipo de variable global de JS?

edit: decir que todo ese código está dentro de un onload = function () { código entero }

código

aquí todo entero en Jsfiddle : https://jsfiddle.net/sgjkvfdj/

bLero

1º - Tienes errores de marcado, llaves mal puestas.
2º - El código en español da cancer
3º - Te está funcionando porque aunque asignas undefined a id, cuando llamas a estilar en la línea 19, ya le estás asignando un valor (id = li[0].id;)
4º - Esos estilos incrustados en JS dan cáncer también.

1 respuesta
Frezz

#2 1º : No los tengo, si los tengo aquí es al pasar esto para que se pueda leer.
2º: Me obligan a usar esos nombres.
3º: Entonces según tú podría quitar el ife de estilar al empezar y ya?
4º: me obligan a dar cáncer de pulmón.

Se los transmitiré a mi profesor gracies noi.

tada

#1 Tu principal problema, a parte de que los corchetes están mal, es que estás declarando unas variables dentro de una función y luego las utilizas en otra sin pasárselas por parámetro ni nada.. por lo que la función estilar no tiene ni idea de lo que es la variable id.

Una solución sería declarar las variables compartidas de forma externa para que mostrarPestanas() y estilar() tengan acceso a ellas.

Mas o menos algo así: https://jsfiddle.net/sgjkvfdj/1/

Frezz

Estoy empezando con js, y claro era la primera vez que usaba una función sin nombre para un evento, la duda era que no tenía claro si dentro de esa función todas las variables anteriores entraban en ese ámbito (que me parecía que sí, en plan includes de código), y que tampoco tenía claro que el objeto que activa el evento está disponible (propiedades y eso) dentro del código que ha ejecutado.

Lo de declararlas en el onload es que el enunciado era algo raro, sólo querían que se llamara a una función con el parámetro de la id esa, yo lo había hecho sin ningún parámetro ni nada pero tuve que rehacerlo así.

Gracias

Usuarios habituales

  • Frezz
  • tada
  • bLero