Matti Mäkitalo: JavaScript aufruf einer Methode

Beitrag lesen

Hi,

var competition = $(event.target).text();
onclick="deleteCompetition(' + competition + ')"

Poste bitte den Originalcode (z.B. ein komplettes Beispiel), ich kann mir nicht vorstellen, dass das hier in irgendeiner Weise funktionieren kann.

Wenn du sowas schreibst, denk daran, dass du gültigen JavaScript-Code erzeugen musst. Dazu gehören auch Stringbegrenzer. onclick muss am Ende einen String enthalten, der so aussieht: deleteCompetition("Hallo"). Du erzeugst deleteCompetition(Hallo). Die Variable Hallo ist, wie der Browser korrekt bemerkt, unbekannt.

Der (vollkommen korrekte und zu empfehlende) Trick, nicht JavaScript-Code zu erzeugen, sondern dem click-Handler direkt eine Funktion zu übergeben, wurde schon gegeben:

onclick = function() {  
  deleteCompetition(competition);  
};

Dann musst du dir auch nicht über das Escaping u.ä. Gedanken machen. Denn wenn du deinen Ansatz weiterverfolgst, wirst du spätestens ein Problem bekommen, wenn competition deinen Stringbegrenzer enthält (' oder "). Dann musst du kompletten Kontextwechsel beachten.

Bis die Tage,
Matti