Struppi: onclick verhalten und foo has no properties

Beitrag lesen

13        buttons[0].onclick = sendInfo.addGoal(id, 0);

hier rufst du die Funktion addGoal() auf und weist dem Handler den Rückgabewert zu - ziemlich sinnlos vermutlich (es denn die Funktion liefert als Rückgabewert eine Funktionsreferenz).

Du willst:

buttons[0].onclick = function()
{
sendInfo.addGoal(id, 0);
};

wobei das id ein Problem ist, da es jeden Schleifendruchgang neu erzeugt wird und in JS lokale Variabeln nicht wirklich lokal sind (nur innerhalb der Funktion) ist in jedem Handler am Ende der letzte Wert der id.

Du kannst dies umgehen, entweder wenn du die Funktionsreferenz mit new Function erzeugst oder wenn du dem objekt den Wert als Attribut mit gibst:

buttons[0].parentId = id;
buttons[0].onclick = function()
{
sendInfo.addGoal(this.parentId, 0);
};

Struppi.