Moin,
ich statte eine Webseite mit mehreren (z.B. 30) Help-Symbolen aus, jedes hat eine ID:
<img id="VIP_1102" class="help" src="img/icon_info.png" alt="info" />
nach Laden der Seite wird denen ein Klick-Event zugeordnet:
window.addEventListener('DOMContentLoaded', function ( ) {
var erster = document.getElementsByTagName( "body" )[0].firstChild;
var newDiv = document.createElement("div");
newDiv.id = "helptext";
document.body.insertBefore( newDiv, erster );
/* *************************************************
*
* HELP-Icons/Buchstaben anschliessen
*
************************************************* */
obj_help = document.getElementsByClassName( "help" );
for ( i=0; i<obj_help.length; i++ ) {
if ( obj_help[i].id ) {
obj_help[i].addEventListener('click', function (event) {
getHelptextXY( bia_domain, bia_owner, bia_kw, bia_ll, this.id, bia_lg, event.clientX, event.clientY );
});
}
}
});
Wenn man draufklickt, wird per Ajax der Help-Text zu diesem Feld geholt und angezeigt. So weit, so gut.
Nun möchte ich das erweitern und nach dem Laden des HTML-Dokuments alle Help-Symbole der Seite "durchhecheln", um diejenigen auszugrauen, für die (noch) kein Helptext vorliegt. Ich sende also vermutlich im Millisekunden-Takt 30 Anfragen los und irgendwann - undefiniert - trudeln die Antworten ein.
Doch wie kann ich wissen, welche Antwort zu welcher ID gehört?
Zuerst habe ich die ID der Anfrage ausserhalb der Funktionen gespeichert und in der Antwort-Funktion genutzt. Das klappte nicht, denn vermutlich haben nachfolgende Ajax-Anfragen die ID längst neu gesetzt und bei ankommendem request wurde "irgendeine" ID genommen.
Dann habe ich versucht, die ID zu übergeben:
...
request.onreadystatechange = zeigeHelptext(id); // Request auswerten
...
function zeigeHelptext(id) {
...
}
Ohne Angabe eines Fehlers wurde nun kein Helptext mehr angezeigt, auch nicht bei Klick. Ich nehme an, die bei request.onreadystatechange anzuspringende Funktion darf nicht mit Parameter versehen werden.
Wie - zum Teufel - kann ich Frage und Antwort zuordnen, wenn Ajax wie ein Maschinengewehr feuert?
Auch hier wieder geschlossene Benutzergruppe, leider kein Online-Beispiel.
Gruß, Linuchs