[JS] Dynamiczne przypisanie zdarzenia

0

Cześć mam obrazek, który ma odpowiednio reagować na zdarzenie onClick(tzn. raz ma reagować, innym razem nie)

Zrobiłem tak:

pImg = document.getElementById("prev");
if(warunek) pImg.onClick = "alert('OK');";
else pImg.onClick = "";

Jednak w ogóle na zdarzenia nie reaguje. Co jest nie tak?

0
Juhas napisał(a)

Jednak w ogóle na zdarzenia nie reaguje. Co jest nie tak?

zdarzenia to nic innego jak funkcje a raczej metody obiektów które wywoływane są przez przeglądarkę gdy 'coś' się wydarzy :)

czyli zdarzenia definiuje się tak jak funkcje natomiast Ty w swoim kodzie stworzyłeś zwyczajną właściwość typu tekstowego do której przypisałeś łańcuch znaków, poza tym nazwy zdarzeń piszę się z małych liter...

masz trzy możliwości:

  var obj = new Object();

  // 1.

  obj.onclick = new Function('alert("click")');

  // 2.

  obj.onclick = function() {
    alert('click');
  }

  // 3.

  function clickFunc() {
    alert('click');
  }

  obj.onclick = clickFunc;
0

inaczej - ty zrobiłeś tak że jeśli warunek zostanie spełniony to element będzie miał ustawione zdarzenie onclick (chociaż błędnie) a jak nie to nic - gdzie jest wywoływana funkcja to robiąca ? Podejrzewam że wywołujesz ją mimo wszystko tylko raz więc zdarzenie już jest przypisane więc powinno być tak:

pImg = document.getElementById('prev');
pImg.on<b>c</b>lick=<b>function(){</b>
 if(warunek) alert('ok');
<b>}</b>

1 użytkowników online, w tym zalogowanych: 0, gości: 1