Foros del Web » Programando para Internet » Javascript »

porqué pasa esto

Estas en el tema de porqué pasa esto en el foro de Javascript en Foros del Web. Tengo el archivo.html y el archivo.js por separado, en el html tengo una parte donde dice: <button id='xd' onclick='submit()'> el tema es q en onclick ...
  #1 (permalink)  
Antiguo 10/10/2014, 19:18
 
Fecha de Ingreso: septiembre-2014
Mensajes: 66
Antigüedad: 9 años, 7 meses
Puntos: 1
porqué pasa esto

Tengo el archivo.html y el archivo.js por separado,
en el html tengo una parte donde dice:
<button id='xd' onclick='submit()'>

el tema es q en onclick llama la funciona submit,
que en el archivo js esta asi:

window.onload=function(){
function submit(){alert();}
}

no se ejecuta la funciona cuando hago click, pero si pongo la funcion submit fuera de la funcion de window.onload si se ejecuta, porque?

necesito que este dentro del onload, porque quiero usar unas variables que solo puedo definir cuando se carga la pagina, y al estar fuera del onload la funcion submit, no puedo acceder a las variables esas, por ejemplo una que sea algun elemento, solo puedo definirla cuando termina de cargar la pagina, pero no la puedo usar en la funcion submit.
  #2 (permalink)  
Antiguo 10/10/2014, 19:52
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: porqué pasa esto

Haciendo esto:

Código Javascript:
Ver original
  1. window.onload = function(){
  2.     foo = 1;
  3. };
  4.  
  5. function submit(){
  6.     alert(foo);
  7. }

Funciona como se espera, pero si tu preocupación es que cargue el código JS luego de la carga del documento, simplemente coloca todo el código justo antes de la etiqueta </body>.

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <html lang = "es">
  3.     <meta charset = "utf-8" />
  4.     <title>Título</title>
  5. </head>
  6.     <button>Botón</button>
  7.     <!-- Otros elementos -->
  8.     <script type = "text/javascript">
  9.     //Aquí debe de ir el código JS
  10.     </script>
  11. </body>
  12. </html>

Con esto, ya no será necesario el uso de window.onload.

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 10/10/2014, 20:02
 
Fecha de Ingreso: septiembre-2014
Mensajes: 66
Antigüedad: 9 años, 7 meses
Puntos: 1
Respuesta: porqué pasa esto

gracias me ayudiaste mucho :D
  #4 (permalink)  
Antiguo 10/10/2014, 21:29
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: porqué pasa esto

buenas,
solo para elaborar un poco la situacion. primero que la funcion submit esta difinda dentro de otra funcion, de modo que esta dentro del scope de onload y el boton no tendrá acceso. y segundo, trata evitar utilizar vocabularios comunes en la API de javascript. si ese botón lo tuvieras dentro de un form, onclick="submit()" no haría rereferencia a la función definida, sino a la función submit de HTMLFormElement.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Etiquetas: funcion, html, js
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 22:46.