Autor Zpráva
Honzýk
Profil *
V dokumentu mám několikrát <div class="muj">Nějaký text</div>
a u všech těchto divů bych potřeboval v externím JS souboru nastavit, aby se po kliknutí na ně spustila funkce mojefunkce(). Jak se to dělá?

Inline onclick nechci..... ani jQuery .....
pako
Profil *
Skus pridat obsluhu udalosti na nejaky spolocny rodicovsky element tychto divov a pri kliknuti porovnaj, ci ma ciel udalosti potrebnu triedu.
Kubo2
Profil
Honzýk:
u všech těchto divů bych potřeboval v externím JS souboru nastavit, aby se po kliknutí na ně spustila funkce mojefunkce()

Skús document.getElementsByClassName:
var mojefunkce = function() {
  // ...
}
window.onload = function() {
  var elems = document.getElementsByClassName("muj");
  for(var c = 0; c < elems.length; c++) {
    if (elems[c].tagName == "DIV")
      elems[c].onclick = mojefunkce;
  }
}
Ďalej keď potom budeš chcieť tej funkcii v mojefunkce odovzdať nejaké argumenty,
môžeš použiť anonymnú funkciu:
// ...
elems[c].onclick = function() {
  mojefunkce(argument1, argument2)
}
// ...
pako
Profil *
[#3] Kubo2
getElementsByClassName je podporovany az od IE9 a pri velkom pocte elementov alebo pri dynamickom pridavani elementov je lepsie pouzit delegovanie

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: