Problem: while-Schleife nach Einladen von Div stoppen

Hallo liebe Forenuser,

ich bin mal wieder an einen Punkt angelangt, an dem ich nicht mehr weiter weiss, aber bei euch wirds vielleicht wen geben, der mir zu helfen vermag.

Folgende Situation: Ich Lade in ein Div in meinem HTML-Dokument Inhalt aus einem Div einer anderen Datei.

Problem: Manchmal lade ich mehrere Divs. Bei einer langsameren Internetverbindung kann es passieren, dass JS versucht etwas in ein Div zu lladen, welches wiederum noch nicht geladen ist. Bisher habe ich Timeouts (setTimeout) genutzt, so dass die Funktionen quasi pausieren, den Inhalt laden und Ende,aber das gefällt mir nicht wirklich.

Meine Idee: Ich lasse eine while-Schleife mit Timeout alle paar Bruchteile einer Sekunde den Bereich einladen. Die Whileschleife soll nur solange laden, bis ein bestimmtes Div-ID im Quellcode vorkommt.

Mein bisheriger Versuch:
Code:
<html>
<head>
<title>Test</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
function link() {
			var var_load_content = $('#content');		//Initialisierung der Variable, wird zum Laden des Inhalts genutzt
					if (var_load_content) {
						var_load_content.load('datei1.html #test' );	//Inhalt von einladen
		return;
			}};

function aufruf(){
			while (!document.getElementById('intro')){
			setTimeout("link()", 100);
			}
			}
$(document).ready(function() {
			$("#click").live("click", function() {alert("test"); aufruf(); });
			});			
			
</script>
</head>
<body>
<div>123</div><br/>
<div id="content">111</div>
<button id="click"></button>
</body>
</html>
Aber das klappt noch nicht wirklich... Mein Browser schmiert lediglich bei ein...
Jemand eine Idee wie ich das beheben, oder aber auch besser machen könnte?

Grüße, da Kire
 
Zuletzt bearbeitet:
Weiß wirklich niemand Rat?

Ich versuche es mal anders zu beschreiben.

Ich lade den inhalt diverser Divs aus anderen Dateien in ein Div meiner aktuellen Datei. Wenn ich jetzt aber erst ein Div mit einem "Grundgerüst" (für die Anordnung anderer Inhalte) lade und danach DA rein andere Inhalte, passiert es meistens, dass einige Sachen nicht geladen werden.
Wenn ich nach jedem Ladeschritt einen Alert aufrufe, dann klappt alles anstandslos, also denke ich mal, dass es einfach von den ladezeiten abhängt.

Also wie könnte ich am besten dafür sorgen, dass hübsch alles nacheinander geladen wird und immer erst ein neuer ladezyklus beginnt, wenn der vorherige abgeschlossen wurde?
 
Sooo, CPoly, ich hab mir das mal angesehen, aber ich komme nicht wirklich weiter:

Code:
<html>
<head>
<title>Test</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>


<script type="text/javascript">
function linka() {
			alert("linka");
			var var_load_content = $('#content');		//Initialisierung der Variable, wird zum Laden des Inhalts genutzt
					if (var_load_content) {
						var_load_content.load('datei1.html #int_content', linkb());	//Inhalt von home.php einladen
		
		
		
			}};
						
			
function linkb() {
			alert("linkb");
			var var_load_content = $('#int_cont_left');		//Initialisierung der Variable, wird zum Laden des Inhalts genutzt
					if (var_load_content) {
						var_load_content.load('datei1.html #left_int', linkc() );	
		
		
		
			}};

function linkc() {
		alert("linkc");
			var var_load_content = $('#int_cont_right');		//Initialisierung der Variable, wird zum Laden des Inhalts genutzt
					if (var_load_content) {
						var_load_content.load('datei1.html #right_int', function() {

} );	//Inhalt von home.php einladen
		
		
		
			}};


		
$(document).ready(function() {
			$("#click").live("click", function() {linka(); });
				});			
			

</script>

</head>
<body>
<div>123</div><br/>
<div id="content">111</div>
<button id="click">klick</button>
</body>
</html>

Wie man sieht, lade ich so nacheinander alle Divs, aber es klappt nicht. Im Browser seh ich lediglich, dass das Div größer wird. Die Alerts werden zwar ausgegeben, aber nix geladen... -.-
 
Zuletzt bearbeitet:
Der zweite Parameter für "load" soll eine Funktion sein. Du übergibst aber "undefined", weil du die Funktion direkt ausführst.

Javascript:
//Falsch
var_load_content.load('datei1.html #int_content', linkb());

//Richtig
var_load_content.load('datei1.html #int_content', linkb);
 
Der zweite Parameter für "load" soll eine Funktion sein. Du übergibst aber "undefined", weil du die Funktion direkt ausführst.

Javascript:
//Falsch
var_load_content.load('datei1.html #int_content', linkb());

//Richtig
var_load_content.load('datei1.html #int_content', linkb);
 
CPoly - vielen Dank^^.
Jetzt im Nachhinein ist es ja auch irgendwie klar.... nun ja, ich geb mich nun diesem typischen "wie blöd kann man nur sein" - Effekt hin und werd jetzt weiterarbeiten können.
Danke Dir,
Kire
 

Neue Beiträge

Zurück