Foros del Web » Programando para Internet » Javascript »

problema con ambito de variables

Estas en el tema de problema con ambito de variables en el foro de Javascript en Foros del Web. hola gente, tengo la siguiente funcion y quiero cambiar dinamicamente el valor de algunos elementos segun la respuesta json de un script php, pero siempre ...
  #1 (permalink)  
Antiguo 23/10/2012, 17:41
Avatar de cadrogui  
Fecha de Ingreso: junio-2003
Mensajes: 875
Antigüedad: 20 años, 10 meses
Puntos: 5
problema con ambito de variables

hola gente, tengo la siguiente funcion y quiero cambiar dinamicamente el valor de algunos elementos segun la respuesta json de un script php, pero siempre me sale undefinied....

estas son las variables que quiero usar, pero no hay caso, alguien me tira un cable por favor...


lblGame = 'Juego Nuevo';
classN = 'action';
callB = newGame;

Código HTML:
	function createMenu () {
		var user = "cadrogui";
		var estado
		var lblGame
		var classN
		var callB

		utils.ajax('ajax_hexagame.php', {
			post: 'usuario=' + user,
			callback: function (result) {
				result = JSON.parse(result);
					//alert(result.message);											
				if ( result.status == 'success' ) {
					if(result.message = 'nogame'){
						lblGame = 'Sin juegos';
						classN = 'disabled';
						callB = '';					
					}else{
						lblGame = 'Juego Nuevo';
						classN = 'action';
						callB = newGame;	
					}
				}
			}
		});	
		
		
		var options = [
				{
					label: lblGame,
					className: classN,
					callback: callB
				},
				{
					label: 'Instrucciones',
					className: 'disabled',
					callback: function () { alert('Sorry, not yet available.'); }
				},
				{
					label: 'Panel Ganadores',
					callback: openLeaderboard
				},
				{
					label: 'Opciones',
					className: 'disabled',
					callback: function () { alert('Sorry, not yet available.'); }
				},
				{
					label: 'Acerca de',
					callback: about
				}
			],
			i = 0,
			l = options.length,
			el;
		
		for ( ; i < l; i++ ) {
			el = utils.create('div');
			el.innerHTML = options[i].label;
			el.className = 'button';
			el.style.top = 102 * i + 10 + 'px';
			el.onTap = options[i].callback;
			if ( options[i].className ) el.className += ' ' + options[i].className;
			mainmenuEl.appendChild(el);
		}

		tapLayer = new HEXA.Tap(homescreenEl);
		utils.bind(homescreenEl, 'tap', handleTap);
	}
__________________
La mejor manera de aprender es por medio de un aprendizaje significativo....

http://www.cocert.cl
  #2 (permalink)  
Antiguo 23/10/2012, 18:10
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: problema con ambito de variables

Creo que está por este lado

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>titulo</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6.  
  7. <script type="text/javascript">
  8. //<![CDATA[
  9. lblGame = 'Juego Nuevo';
  10. classN = 'action';
  11. callB = newGame;
  12.  
  13.  
  14. alert(callB);
  15.  
  16.  
  17.  
  18. //]]>
  19. </head>
  20.  
  21. </body>
  22. </html>

La consola va a reportar

Error: ReferenceError: newGame is not defined
Archivo de origen: unde.html
Línea: 12


Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 24/10/2012, 06:35
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: problema con ambito de variables

Emprear, mis super poderes mentales me dicen que "newGame" es una función que simplemente cadrogui no ha añadido en el extracto de código que ha posteado.


El callback de tu AJAX se ejecuta asíncronamente, asi que el OPTIONS y el bucle que tiene debajo se ejecuta antes de que AJAX responda, por lo que las variables esas qeu declaras al principio, están todas a undefined en ese momento.

Etiquetas: ajax, ambito, funcion, html, js, php, 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 20:41.