• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Variable in Funktion übergeben

emmis

New member
Hi,

ich benutze und verstehe zu grossen Teilen folgendes JS/AJAX:

Code:
var xmlHttpObject = false;

if (typeof XMLHttpRequest != 'undefined') 
{
    xmlHttpObject = new XMLHttpRequest();
}
if (!xmlHttpObject) 
{
    try 
    {
        xmlHttpObject = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch(e) 
    {
        try 
        {
            xmlHttpObject = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch(e) 
        {
            xmlHttpObject = null;
        }
    }
}


function loadContentTest(zusatz, datalink, ziel)
{
   xmlHttpObject.open('get',datalink + '.php?' + zusatz);
    xmlHttpObject.onreadystatechange = handleContentTest;
    xmlHttpObject.send(null);
    return false;
}

function handleContentTest()
{
	if (xmlHttpObject.readyState == 4)
    {
        document.getElementById('zielelement').innerHTML = xmlHttpObject.responseText;
		var sc = document.getElementById('zielelement').getElementsByTagName('div');
		
		for (var i = 0; i < sc.length; i++){
			var newSc = document.createElement("script");
			newSc.type = sc[i].type;
			newSc.text = sc[i].text;
			if (sc[i].src) newSc.src = sc[i].src
			sc[i].parentNode.replaceChild(newSc, sc[i]);
		}
    }
}

Die Aktualisierung der Seitenelemente erfolgte bisher immer über die vorgegebene ID (hier 'zielelement'). Das funktioniert soweit auch alles bestens und fix genug. Ich möchte nun aber die ID des zu aktualisierenden Elements dynamisch weiter geben. Wenn ich also z.B. durch onchange="loadContentTest('w=100','ajax_a.inc','SELCONTAINER');" die Funktion aufrufen würde, dann sollte der Bereich "SELCONTAINER" durch die Funktion aktualisiert werden.

Wie aber bekomme ich die entsprechende Variable in die Funktion handleContentTest?

Stehe auf dem Schlauch und sehe mich schon an einer komplizierten Lösung arbeiten. Kann mir jemand die richtige Richtung weisen?

- - - Aktualisiert - - -

Hi, habe selber eine Lösung gefunden, indem ich eine verschachtelte Funktion aufgebaut habe, in der die Variablen dann "quasi global" sind:

HTML:
function loadContentUni(zusatz, ziel)
{

var id = document.forms[0].formelementname.value;
elziel = ziel;
zusatz = zusatz + "&id=" + id;

var datalink = 'ajax_defaultelements.inc.php';

function loadContentIN(zusatz, datalink)
{
   	xmlHttpObject.open('get',datalink + '?' + zusatz);
    xmlHttpObject.onreadystatechange = handleContentUni;
    xmlHttpObject.send(null);
    return false;
}

function handleContentUni()
{
	//alert('yx:' + yx);
	if (xmlHttpObject.readyState == 4)
    {
        document.getElementById(elziel).innerHTML = xmlHttpObject.responseText;
		var sc = document.getElementById(elziel).getElementsByTagName('div');
		
		for (var i = 0; i < sc.length; i++){
			var newSc = document.createElement("script");
			newSc.type = sc[i].type;
			newSc.text = sc[i].text;
			if (sc[i].src) newSc.src = sc[i].src
			sc[i].parentNode.replaceChild(newSc, sc[i]);
		}
    }
}
loadContentIN(zusatz, datalink);
}

</code>

... keine Ahnung, ob da was gegenspricht. Funzt aber!
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben