Homepage selbermachen 7.851 Themen, 35.616 Beiträge

Problem bei JS-Funktion: Wo ist der Fehler?

wlaner / 6 Antworten / Flachansicht Nickles

Hallo,
mein Problem: Eine JS-Funktion macht nicht (sofort) das was sie soll, erst beim zweiten Aufruf.

Hier erstmal der Quellcode-Ausschnitt:

  
<div id="1" class="noBlock">
<a href="[...]" target="_blank">[...]</a>
<noscript><a href="[...]del.php?id=1"></noscript>
<img src="imgs/del.gif" onClick="javascript:del(1);" border="0">
<noscript></a></noscript>
<br />
http://www.adresse.xyz
</div>

...

function del(delID)
{
// linkzahl korrigieren
var numLinks = document.getElementById("dynNumLinks").firstChild.nodeValue - 1;
document.getElementById("dynNumLinks").firstChild.nodeValue = numLinks;
// zu ladende url
loadURL = "./jobs/ajax/delete.php?lid=" + delID;
// url async. aufrufen
reload(0, loadURL, 1);
// eintrag loeschen
document.getElementById(delID).parentNode.removeChild(document.getElementById(delID));
}



Also. In dem div befindet sich eine Grafik, die auf onClick reagiert und del() aufruft.
(Alternativ wird für nichtaktiviertes JS ein PHP-Script aufgerufen, aber das sollte nichts mit dem Problem zu tun haben.)

del() hat die Aufgabe, eine im Text angegeben Zahl zu korrigieren, eine Url asynchron zu laden und schließlich den div mit der übergebenen Id zu entfernen.

Wenn nun die Funktion zum ersten mal aufgerufen wird, funktioniert alles, bis auf das Entfernen des divs. Wird die Funktion nun ein zweites mal mit der selben Id aufgerufen (also einfach ein neuer Klick auf das noch vorhandene Bild), so wird der div entfernt.
Folgen jetzt weitere Aufrufe der Funktion mit anderen Ids funktioniert alles schon von Anfang an, ohne dass ein zweiter Aufruf nötig ist.
Folglich tritt das Problem nur beim ersten Aufruf auf.

Weis echt nicht woran das liegen könnte...sieht jemand den Fehler?

WL

PS: Wenn jemand den ganzen JS-Code braucht, melden.
PPS: Is n bissl unübersichtlich geworden, hoffe man kommt zurecht :)
bei Antwort benachrichtigen
xafford wlaner „Stimmt... hab ich anfangs absichtlich so reingebaut da wurden die ids noch...“
Optionen

Noch ein Nachtrag, hatte ich vergessen zu schreiben:

Das mit dem entfernen des Links per JavaScript würd ich anderst machen. Du entfernst als erstesden Link und signalisierst dem Nutzer damit, dass diesgeklappt hat, dann sendest Du erst den Befehl an den Server. Eleganter wäre, wenn Du erst dieAnforderung an den Server sendest und dann anhand des Rückgabewertes vom Server entscheidest ob das Löschen geklappt hat und dann erst den Link entfernst wenn sicher ist, dass er auch auf dem Server gelöscht wurde.

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen