"Wiederholende" Ausgabe mit ajax

Tapir

Mitglied
Hallo zusammen

Ich steh wieder mal im Wald - und wieder wegen eines vermeindlich simplen Problems.

Ich habe ein .js, welches auf ein xml zugreift und den Inhalt ausgibt.
Das Ding wird per event-handler aufgerufen. Unten seht ihr, dass die Ausgabe-Funktion in einer <ul> ein <li> und schliesslich ein <a> kreiert.

Code:
[...verbinden etc....]

function ausgeben() {
var naviId = 2;

   if (http.readyState == 4) {
 
      var liste = document.getElementById("navi_" + naviId);
      
      var daten = http.responseXML;
      var ergebnisse = daten.getElementsByTagName("link_" + linkId);

      for (var i = 0; i < ergebnisse.length; i++) {
         var name, url, evt;
         var datum = ergebnisse[i];
         for (var j = 0; j < datum.childNodes.length; j++) {
            with (datum.childNodes[j]) {
               if (nodeName == "Name") {
                  name = firstChild.nodeValue;
               } else if (nodeName == "Link") {
                  url = firstChild.nodeValue;
               } else if (nodeName == "event") {
                  evt = firstChild.nodeValue;
               }
            }
         }
         
         var li = document.createElement("li");
         var a = document.createElement("a");
         a.setAttribute("href", url);
         a.setAttribute("onclick", evt);
         var txt = document.createTextNode(name);
         a.appendChild(txt);
         li.appendChild(a);
         liste.appendChild(li);
      }
   }
}

Nun mein Problem: Wiederholtes drücken auf den Link, der die Funktion aufruft, führt logischerweise zu wiederholten -und redundanten- Einträgen in meiner <ul>. Das will ich nun verhindern.

Versucht hab ich bereits einiges, jedoch ohne Erfolg. Ein Ansatz war, abzufragen, ob die <ul> leer ist oder nicht. dazu schrieb ich folgende Zeile:

Code:
       if (document.getElementById("navi_" + naviId).innerHTML = null;)
       { ...führ die Funktion aus... }
Hab aber den Eindruck, dass das Schrott ist.

Hat jemand eine Idee?

Danke und Gruss
 
Zuletzt bearbeitet:
Hallo zusammen

Ich steh wieder mal im Wald - und wieder wegen eines vermeindlich simplen Problems.

Ich habe ein .js, welches auf ein xml zugreift und den Inhalt ausgibt.
Das Ding wird per event-handler aufgerufen. Unten seht ihr, dass die Ausgabe-Funktion in einer <ul> ein <li> und schliesslich ein <a> kreiert.

Code:
[...verbinden etc....]

function ausgeben() {
var naviId = 2;

   if (http.readyState == 4) {
 
      var liste = document.getElementById("navi_" + naviId);
      
      var daten = http.responseXML;
      var ergebnisse = daten.getElementsByTagName("link_" + linkId);

      for (var i = 0; i < ergebnisse.length; i++) {
         var name, url, evt;
         var datum = ergebnisse[i];
         for (var j = 0; j < datum.childNodes.length; j++) {
            with (datum.childNodes[j]) {
               if (nodeName == "Name") {
                  name = firstChild.nodeValue;
               } else if (nodeName == "Link") {
                  url = firstChild.nodeValue;
               } else if (nodeName == "event") {
                  evt = firstChild.nodeValue;
               }
            }
         }
         
         var li = document.createElement("li");
         var a = document.createElement("a");
         a.setAttribute("href", url);
         a.setAttribute("onclick", evt);
         var txt = document.createTextNode(name);
         a.appendChild(txt);
         li.appendChild(a);
         liste.appendChild(li);
      }
   }
}

Nun mein Problem: Wiederholtes drücken auf den Link, der die Funktion aufruft, führt logischerweise zu wiederholten -und redundanten- Einträgen in meiner <ul>. Das will ich nun verhindern.

Versucht hab ich bereits einiges, jedoch ohne Erfolg. Ein Ansatz war, abzufragen, ob die <ul> leer ist oder nicht. dazu schrieb ich folgende Zeile:

Code:
       if (document.getElementById("navi_" + naviId).innerHTML = null;)
       { ...führ die Funktion aus... }
Hab aber den Eindruck, dass das Schrott ist.

Hat jemand eine Idee?

Danke und Gruss

also wenn dann müsste es == null heißen...
oder besser == "", denk ich...
 
Hi OnlyFoo

Wie blöd muss man wohl sein, um das zu übersehen und dann noch zu posten?
Mann!

Vielen Dank, es läuft mit

Code:
if (document.getElementById('id_name').innerHTML == '')   {
...machdieajaxfunktionundzwardalli.. 
}

Gruss
 
Zurück