2012-11-05 17 views
12

Jak programowo dodać zdarzenie onclick do znacznika w HTML?JavaScript, programowo dodaj zdarzenie onclick

Chcę móc kliknąć łącze i mieć włączone zdarzenie onclick do funkcji javascript na inny znacznik.

Oto co mam do tej pory:

var table = document.getElementById(tableID); 
var rowCount = table.rows.length; 
var row = table.insertRow(rowCount); 
var cell1 = row.insertCell(0); 
var element1 = document.createElement("input"); 
element1.type = "text"; 
element1.id="List["+num+"].id"; 
element1.name="List["+num+"].id"; 
element1.onclick="javascript:CalCal()"; 
cell1.appendChild(element1); 

chcę zadzwonić funkcji javascript CalCal() na zdarzenia onClick. czy to możliwe?

+0

spróbował wykorzystać 'jQuery', twoje życie będzie dużo łatwiejsze: D – nXqd

Odpowiedz

22

Należy jednak pamiętać, że addEventListener jest obsługiwana tylko w IE od wersji 9. W celu wspierania starszych wersji IE można użyć coś takiego:

if (element1.addEventListener) { // all browsers except IE before version 9 
    element1.addEventListener("click", CalCal, false); 
} else { 
    if (element1.attachEvent) { // IE before version 9 
    element1.attachEvent("click", CalCal); 
    } 
} 
+1

Potrzebuję również przekazać parametr ... jak mogę? – nidhi

+0

w tym przypadku musisz zastąpić '' 'CalCal''' wewnątrz' 'addEventListener''''' 'attachEvent''' z anonimową funkcją podobną do poniższej:' '' function() {CalCal (yourParameter); } '' ' – mike

+0

+1 dla rozwiązania kompatybilności IE, dokładnie to, czego potrzebowałem! – Enrico

10

Tak można dodać zdarzenie onclick programowo w javascript tak:

element1 = document.getElementById("your_tag_id"); 
element1.addEventListener("click", CalCal) 

To przywiązuje zdarzenie onClick do tagów z id = "your_tag_id".

Można również usunąć zdarzenie onclick tak:

element1.removeAttribute("click"); 

więcej na https://developer.mozilla.org/en-US/docs/DOM/element.addEventListener

0

Spróbuj

element1.onclick=CalCal; 

zamiast:

element1.onclick="javascript:CalCal()"; 
+0

nie działa ... – nidhi

+3

element1.onclick = function() {CalCal();} powinien być poprawną składnią tutaj. – fiacobelli

+0

Nie, 'CalCal' jest po prostu odwołaniem do funkcji, użyłbyś również odwołania do funkcji tworząc anonimową' function() {}. – IProblemFactory

Powiązane problemy