Variable von Funktion an andere Funktion übergeben

BenschM@ster

Mitglied
Hi,
folgendes Problem habe ich heute ;-)

Ich übergebe von einem HTML Dokument 2 Variablen an eine Funktion:
Code:
onkeyup="search('input','output')

Die Funktion search benutzt die Variable input.
Die Variable output wird weitergegeben an die Funktion "ausgabe":
Code:
req.onreadystatechange = ausgabe(output);

Diese wird dann dort verarbeitet mittels:
Code:
response = document.getElementById(output)

Klappt aber nicht.
Solange ich input als Variable benutze, und output ersetze durch den Wert (also z.B. response = document.getElementById('ergebnis') klappt alles wunderbar.

Wo isn da der Fehler? Auf welche Weise wird bei JavaScript eine Variable weitergegeben?

Danke und Gruß,
Benjamin
 
Hi.
Hi,
folgendes Problem habe ich heute ;-)

Ich übergebe von einem HTML Dokument 2 Variablen an eine Funktion:
Code:
'input','output')
Wie es aussieht übergibst du keine Variablen, sondern Stringliterale an eine Funktion.
Die Funktion search benutzt die Variable input.
Die Variable output wird weitergegeben an die Funktion "ausgabe":
req.

Diese wird dann dort verarbeitet mittels:
Code:
response = document.getElementById(output)
Warum fehlt denn da die Hälfte? Kannst du nicht mal den relevanten Code annähernd komplett posten?
Bsp:
Javascript:
var output = 'ergebnis';

function x(arg) {
  y(arg);
}

function y(aus) {
  alert(aus);
}

x (output);
Gruß
 
Ok hier mal der wichtige Teil des Codes:
search(input,output)
Code:
	var url = './search.php?anfrage='+document.getElementById(input).value;
	req.open("GET", url, true);

	//Beim abschliessen des request wird diese Funktion ausgeführt
	req.onreadystatechange = ausgabe(output);

	req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	req.send(null);

und ausgabe(output)
Code:
switch(req.readyState) {
		case 4:
		if(req.status!=200) {
			alert("Fehler:"+req.status);
		}
		else{
			response = document.getElementById(output);
                         id = req.responsetext;
                         response.innerHTML = req.responseText;
		}
         break;

         default:return false;
         break;
	}

Mir ist aufgefallen, dass die ganze Sache schon nicht mehr funktioniert wenn ich eingebe:
Code:
	req.onreadystatechange = ausgabe();
Also allein die Klammern machen hier was aus!? Ohne Klammern mit festen Werten geht alles prima.
 
Mir ist aufgefallen, dass die ganze Sache schon nicht mehr funktioniert wenn ich eingebe:
req.
Also allein die Klammern machen hier was aus!? Ohne Klammern mit festen Werten geht alles prima.
Ja, natürlich. Mit den Klammern rufst du die Funktion bereits auf - obwohl zu dem Zeitpunkt der Request ja noch gar nicht gesendet wurde.

Probier's mal so:
Javascript:
req.onreadystatechange = new function() { ausgabe(output); };

Gruß
 

Neue Beiträge

Zurück