Ver Mensaje Individual
  #16 (permalink)  
Antiguo 13/06/2008, 15:10
anac
 
Fecha de Ingreso: noviembre-2006
Mensajes: 46
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Darle valor a variables globales desde una función

Te explico lo que yo creo que sucede.... yo diría que las funciones se comportan como si estuvieran en .js distintos, como básicamente cada función lo único que tiene es una variable C que contiene código HTML, este código HTML se muestra por pantalla, el usuario selecciona un enlace de este código HTML y se vuelve a llamar al archivo.js que contiene la función....pero al llamar otra vez al archivo.js las varibles globales ya no tienen el valor que se le ha dado antes, por lo que valen undefined...


Te pongo un pequeño ejemplo de como es mi archivo.js para que lo entiendas mejor, porque no se si habrás entendido mi explicación... Este código simplemente es un resumen, si lo pruebas no creo que funcione porque le he quitado un montón de instrucciones, si quieres puedo mandarte mi código entero por si tienes curiosidad o quieres probarlo... yo de todas maneras tenía que guardar al final los resultados en un XML, así que voy a ir haciéndolo desde el principio y no tengo que darle más vueltas a esto de las variables globales...



ESTO ES INICIO.HTML
Código HTML:
<html>
<head>
<SCRIPT type="text/javascript" src="archivo.js"></SCRIPT>
</head>
<body onload="iniciar_hora()">

<a href="#" onclick="javascript:comenzar()">Inicio</a>
</body>
</html> 


ESTO ES ARCHIVO.JS
Código:
var hora_global;
var minuto_global;
var segundo_global ;

function iniciar_hora()
{
//extraemos del objeto la hora, minuto y segundo actuales
var fecha = new Date();
hora_global = fecha.getHours();
minuto_global = fecha.getMinutes();
segundo_global = fecha.getSeconds();
return true;
}


function comenzar()
{

var C;
C='<html>';
C+='<head>';
C+='<SCRIPT LANGUAGE="Javascript" SRC="archivo.js"charset="utf-8"></SCRIPT>';
C+='</head>';
C+='<body >';
C+='Incio de la experiencia.';
C+='<a href="#" onclick="javascript:comenzar2()"> COMENZAR</a> ';
C+='</body>';
C+='</html>';
parent.central.document.write(C); //Muestro el contenido de C por pantalla, en el 
                                    //frame C que es mi frame principal

return true;
}


function comenzar2()
{
var C;

C='<html>';
C+='<head>';
C+='<SCRIPT LANGUAGE="Javascript" SRC="archivo.js" charset="utf-8"></SCRIPT>';
C+='</head>';
C+='<body>';
C+='<a href="#" onclick="javascript:funcion1()">ENUNCIADO 1 </a>';
C+='<a href="#" onclick="javascript:funcion2()">ENUNCIADO 2</a>';
C+='<a href="#" onclick="javascript:funcion3()">ENUNCIADO 3</a>';

parent.central.document.write(C); 

mostrar_hora();   // He probado que si por ejemplo aquí llamo a esa función
                             // dirá que las variablea globales tienen valor undefined...
return true;
}



function mostrar_hora()
{
alert("hora_global = "+hora_global+"\r\nminuto_global = "+minuto_global+"\r\nsegundo_global = "+segundo_global); 
}

Última edición por anac; 13/06/2008 a las 15:22