Fehler bei getElementById

rantanplan

Grünschnabel
Hallo zusammen,

ich quäle mich seit längerem mit einer Fehlermeldung in einer JS Funktion herum.

Die Funktion lautet :

Code:
function TEST_XMLHttpRequest(sUrl,sDiv) {

	var xmlHttp = null;
	
	// Mozilla, Opera, Safari sowie Internet Explorer (ab v7)
	if (typeof XMLHttpRequest != 'undefined') {
			xmlHttp = new XMLHttpRequest();
	}
	if (!xmlHttp) {
			// Internet Explorer 6 und lter
			try {
					xmlHttp  = new gbLayerTimeoutIsActiveXObject("Msxml2.XMLHTTP");
			} catch(e) {
					try {
							xmlHttp  = new gbLayerTimeoutIsActiveXObject("Microsoft.XMLHTTP");
					} catch(e) {
							xmlHttp  = null;
					}
			}
	}
	if (xmlHttp) {
			xmlHttp.open('GET', sUrl, true);

			xmlHttp.onreadystatechange = function () {
					if (xmlHttp.readyState == 4) {
						
						document.getElementById(sDiv).innerHTML = xmlHttp.responseText;
					}
			};
			xmlHttp.send(null);
	}

}
 function jsPrdcnf_setMotivArea(sDiv) {

	sUrl = "./test.php?action=motivArea&view=1";
	TEST_XMLHttpRequest(sUrl,sDiv);
}

aufgerufen wird das ganze durch :

HTML:
<script type="text/javascript">jsPrdcnf_setMotivArea('<?= $_SESSION['upload']['motivArea'] ?>') </script>

Jedoch erhalte ich im FF die Fehlermeldung :

document.getElementById(sDiv) is null

und im IE sieht sie ähnlich aus.

Ich hoffe ihr könnt mir helfen.
Im Voraus schonmal dankeschön.

Christoph
 
Hi Sven.

So geht es mir auch. Erkenne eigentlich keinen Fehler. Und darum treibt es mich auch fast in die Verzweiflung. Welchen Funktionsaufruf meinst du ? Hatte ihn doch eigentlich unten mitgepostet.

<script type="text/javascript">jsPrdcnf_setMotivArea('<?= $_SESSION['upload']['motivArea'] ?>') </script>

wenn ich ein alert vor die "fehlerhafte" Stelle mache und mir sDiv ausgeben lasse, dann gibt er mir auch die gewünschte DIV-Id aus. Und wenn ich getElementById('gewünschteID') mache. Dann setzt er mir auch den Text in das gewünschte DIV. Nur wenn ich die ID per sDIv übergeben möchte zickt es rum. Ich bin völlig ratlos.

Gruß Christoph
 
Welchen Funktionsaufruf meinst du ? Hatte ihn doch eigentlich unten mitgepostet.

<script type="text/javascript">jsPrdcnf_setMotivArea('<?= $_SESSION['upload']['motivArea'] ?>') </script>

Sorry, den hatte ich ignoriert :-)

Wann rufst du das ganze denn auf? Bist du sicher, dass der Aufruf im Quelltext nach diesem DIV steht?

Falls nicht, könnte es sein, das die Antwort kommt, bevor das <div> gelesen wurde...das würde den Fehler erklären.

Ist das irgendwo online?
 
Das aufgerufene DIV müsste eigentlich schon bestehen. Das Prinzip dahinter ist das der User ein Bild hochläd und dieses Bild bearbeitet wird und dann in dem DIV angezeigt wird natürlich ohne reload. Bis dahin beinhaltet das DIV einen Platzhalter. Also da ist es sicher. Das Problem darin sehe ich bei der Fehlermeldung das da steht "getElementById(sDiv) is null", sollte da nicht stehen "getElementById(wert von sDiv) is null" ? oder täusche ich mich da.

Bisher ist das ganze nur lokal auf meinem Rechner, sorry.

Gruß Christoph
 
Das Problem darin sehe ich bei der Fehlermeldung das da steht "getElementById(sDiv) is null", sollte da nicht stehen "getElementById(wert von sDiv) is null" ? oder täusche ich mich da.

Nö, das muss da nicht unbedingt stehen.
Die Fehlermeldung besagt, dass das <div> nicht gefunden wurde...dass die ID korrekt in sDiv steht, hast du ja per alert() getestet.

Prüfe mal, ob da bei der Session-Variable nicht ausversehen ein Leerzeichen am Anfang/Ende reingerutscht ist, das würdest du beim alert() nicht sehen.
 
Habe jetzt mal ein trim() um die Session-Variable gesetzt, aber auch dies hilft nicht. Kann es sein das ich vielleicht ein Hochkomma bei der Übergabe falsch gesetzt habe ?
 
Nö, da sehe ich nichts Problematisches.

Das aufgerufene DIV müsste eigentlich schon bestehen.

warum müsste?
Steht der Funktionsaufruf nun vor dem <div> oder nach dem <div>?

Füge mal in der test.php eingangs folgendes ein:
Code:
<?php sleep(3); ?>
und erweitere die URL ein wenig:
Code:
function jsPrdcnf_setMotivArea(sDiv) {

	sUrl = "./test.php?action=motivArea&view=1?"+new Date().getTime();
	TEST_XMLHttpRequest(sUrl,sDiv);
}

Ersteres, um ein wenig Zeit bis zur Antwort zu schinden(bis dahin wäre das Dokument sicher fertiggeladen)
Letzteres, um sicherzustellen, dass der Request nicht aus dem Cache bedient wird.
 
Hallo Sven.

Ich habe den Fehler jetzt so gefunden. Das Problem ist das ich nicht alleine an dem Projekt arbeite. Und mein Vorgänger hat das komplette Upload-Zeugs in ein Iframe gesetzt gehabt. Was ich nicht gesehen hatte.
Ist ja klar das ich dann nicht darauf zugreifen kann :-( .
Ich danke dir trotsdem für deine Hilfe und die aufgebrachte Zeit

Gruß Christoph
 

Neue Beiträge

Zurück