Tengo problemas con las variables globales.Javascript: Variables globales compartidas entre archivos .js
Teniendo en cuenta que tengo los siguientes archivos: init.html, principal.html, Init.js., main.js y help.js:
Cuando, init.html:
<HTML>
<HEAD>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.3.min.js"></script>
<script type="text/javascript" charset="UTF-8" src="init.js" ></script>
<script type="text/javascript" charset="UTF-8" src="main.js" ></script>
<script type="text/javascript" charset="UTF-8" src="help.js" ></script>
</HEAD>
<BODY>
<script>
$(document).ready(function() {
test();
});
</script>
</BODY>
</HTML>
En Init.js.:
function test(){
alert(window.glob);
}
En principal.html:
<HTML>
<HEAD>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.3.min.js"> </script>
<script type='text/javascript' >
top.glob = "global variable";
</script>
<script type="text/javascript" charset="UTF-8" src="help.js" ></script>
<script type="text/javascript" charset="UTF-8" src="main.js" ></script>
</HEAD>
<BODY>
<div id="divtest"></div>
<form>
<input type="button" value="button" onClick="callTest()" />
</form>
</BODY>
</HTML>
main.js:
function change(p){
window.glob = p;
$('#divtest').html("<iframe id='IFRAMEtest' width='720' height='400' frameborder='0' src='init.html'></iframe>");
}
Y en help.js:
function callTest(){
change('param');
}
Cuando hago clic en el botón, se muestra "variable global", pero necesito mostrar "parámetro".
En resumen, necesito que un archivo .js lea una variable global en otro archivo js donde esta variable se alimenta a una función llamada por un evento de un usuario.
Gracias.
editar - variable global inicializada antes de importar archivos. js y usando la parte superior. Funciona en IE y Firefox, pero Chrome muestra "indefinido"
Considere la posibilidad de minimizar el uso de propiedades globales (variables globales y funciones globales). El espacio de nombres global ya contiene cientos de nombres; no desea insertar sus propios nombres en ese espacio de nombres. –
Sí, estoy de acuerdo. Sé que tal vez ya sepan esto, pero los globales son casi siempre una forma terrible de hacer las cosas. Lógica abstracta en funciones y pasar parámetros en su lugar. Firmado, el chico que tiene que mantener tu código de spaghetti un día :) –