Tabelle erweitern mit JS und Ajax - Variable in getElementById()
Marsi
- javascript
Hallo zusammen
Ich möchte gerne eine Tabelle in PHP programmieren, welche beim MouseOver durch zusätzliche Daten in einer darunterstehenden Zeile ergänzt wird. PHP und Ajax funktionieren, jedoch habe ich Probleme mit der Variable in getElementById(). Das Problem muss in der 3. Funktion liegen und oder in der Zeile "var ss = document.getElementById(idnr);".
Ganzes Skript:
<script language="javascript">
//Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
} else if(window.ActiveXObject) {
return new ActiveXObject("Microsoft.XMLHTTP");
} else {
alert("Browser für diese Anwendung zu alt!");
}
}
//Our XmlHttpRequest object to get the auto suggest
var searchReq = getXmlHttpRequestObject();
//Called from keyup on the search textbox.
//Starts the AJAX request.
function searchSuggest(str) {
if (searchReq.readyState == 4 || searchReq.readyState == 0) {
searchReq.open("GET", 'details.php?search=' + str, true);
searchReq.onreadystatechange = handleSearchSuggest(str);
searchReq.send(null);
}
}
//Called when the AJAX response is returned.
function handleSearchSuggest(rgid) {
if (searchReq.readyState == 4) {
var idnr = "search_suggest_"+rgid;
var ss = document.getElementById(idnr)
ss.innerHTML = '';
var str = searchReq.responseText.split("\n");
for(i=0; i < str.length - 1; i++) {
//Build our element string. This is cleaner using the DOM, but
//IE doesn't support dynamically added attributes.
var suggest = '<div>' + str[i] + '</div>';
ss.innerHTML += suggest;
}
}
}
if (searchReq.readyState == 4) {
var ss = document.getElementById(idnr);
var str = searchReq.responseText.split("\n");
}
</script>
Aufruf erfolgt über
onmouseover='searchSuggest(".$rgid.");'
Die Daten werden anschliessend in <div id='search_suggest_".$rgid."'></div> geschrieben ($rgid steht für Rechnungs-Nummer).
Vielen Dank für Hilfe.
Liebe Grüsse aus der Schweiz.
Marcel
Mahlzeit,
Das Problem muss in der 3. Funktion liegen und oder in der Zeile "var ss = document.getElementById(idnr);".
Was sagt denn die Fehlerkonsole eines vernünftigen Browsers dazu?
var ss = document.getElementById(idnr)
Du schließt diese Zeile in der Funktion - anders als oben - nicht mit einem Semikolon ab ...
if (searchReq.readyState == 4) {
var ss = document.getElementById(idnr);
var str = searchReq.responseText.split("\n");
}
Der Code an dieser Stelle wird direkt beim bzw. nach dem Laden der Seite ausgeführt. Gibt es das Objekt "searchReq" zu diesem Zeitpunkt bereits? Welchen Wert hat die Variable "idnr" zu diesem Zeitpunkt - und wo kommt sie überhaupt her?
MfG,
EKKi
Vielen Dank, habs übersehen.
Marsi