JS Variablenwerte setzen sich zurück

Bullet1990

Mitglied
Moin Leute,

ich hab die folgende Javascript-Funktion:

Code:
function showData(node, content, i)												
	{
	var fst = 0;
	var scnd = 0;
	var thrd = 0;
	
		if(window.XMLHttpRequest())
			{
				xmlhttp = new XMLHttpRequest();		
			}
		else
			{
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");	
			}
		xmlhttp.onreadystatechange = function() 
			{
				if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
					{
						if(i == 0)
							{
								document.getElementsByClassName("panel")[0].outerHTML = document.getElementsByClassName("panel")[0].outerHTML + xmlhttp.responseText;
							}
						else
							{
							var id = "";			
							var dec = i-1;							
								
								switch(node){	
									case "lic_id":
										id = "1"+dec;
											if(nodeExisting(5))
												{ fst = 1;} 
											if(nodeExisting(7))
												{ scnd = 1;}
											if(nodeExisting(8))
												{ thrd = 1;}
										break;
									case "k_u_id":
										id = "2"+dec;
										
											if(nodeExisting(5))
												{ fst = 1;} 
											if(nodeExisting(3))
												{ scnd = 1;}
										break;
									case "dep_id":
										id = "3"+dec;
											if(nodeExisting(2))
												{ fst = 1;} 
											if(nodeExisting(5))
												{ scnd = 1;}
												
										break;
									case "l_id_f":						
										id = "4"+dec;
											if(nodeExisting(4))
												{ fst = 1;} 			
										break;							
									case "sys_id":
											if(nodeExisting(1))			
												{ fst = 1;} 
											if(nodeExisting(2))
												{ scnd = 1;}
											if(nodeExisting(3))
												{ thrd = 1;}			
										id = "5"+dec;					
										break;							
									case "bu_id":						
										id = "6"+dec;
											if(nodeExisting(6))
												{ fst = 1;} 
										break;
									case "l_name":						
										id = "7"+dec;
											if(nodeExisting(1))
												{ fst = 1;} 
											if(nodeExisting(3))
												{ scnd = 1;}
										break;
									case "host":
										id = "8"+dec;
											if(nodeExisting(1))
												{ fst = 1;} 
										break;
																
								}
								
							hideUpperNode(id.charAt(0), dec);
								
								document.getElementById(id).outerHTML = document.getElementById(id).outerHTML + xmlhttp.responseText;
							}
					}
			}
			
	alert(fst + " " + scnd + " " + thrd);
			
		xmlhttp.open("GET", "ajaxdata?node="+node+"&content="+content+"&i="+i+"&fst="+fst+"&scnd="+scnd+"&thrd="+thrd,true);
		xmlhttp.send();
	}

Ganz oben seht ihr ja die drei Variablen mit dem Startwert 0.
Innerhalb der switch-Anweisung werden diese auf 1 gesetzt, wenn sie die Bedingung erfüllen.
Durch alert-Test weiß ich, dass das Ändern auf 1 innerhalb der switch-Anweisung funktioniert und die Variablen die neuen Werte auch erhalten.
Mein Problem ist jedoch, dass sie wieder den Wert 0 annehmen, sobald die Umgebung der switch-Anweisung verlassen wird.
Der untere alert-Befehl gibt "0 0 0" aus, obwohl mindestens einer der Werte hätte 1 sein sollen.
Sieht jemand den Bug?
 
Hi,

dein Request läuft asynchron ab. Das heisst, der Programmablauf wird fortgeführt, während der Request ausgeführt wird - deshalb haben die Variablen im alert zu diesem Zeitpunkt noch den Wert Null.

Ist der Request abgeschlossen und war erfolgreich, wird die callback-Funktion aufgerufen, die unter onreadystatechange definiert wurde. Und erst dann werden die Variablen entsprechend den Bedigungen gesetzt.

Ciao
Quaese
 

Neue Beiträge

Zurück