Autor Zpráva
crash01
Profil
Zdravím,
snažím se o kompletní odsunutí javascriptu mimo HTML soubor. Události kontroluji až tam (ne pomocí atributů typu onClick), ale potřeboval bych tímto způsobem předávat i nějaké atributy. Jedinné řešení, které mě momentálně napadá, je použít vlastní HTML atributy (místo <span onclick="funkce('neco')"></span> použít něco jako <span id="nejakeID" parametr="neco"></span>), ale nevím jestli to není trochu prasárna.

Co používáte vy?

Díky :)
Darker
Profil
Nevím kde jsi na tenhle nápad přišel, ale jistě to nebylo moc dobré místo. Obvykle se to prasí pomocí jQuery:
$(document).ready(function(){
  
  $("#nejakeID").bind("click", function(){
      funkce('neco');
  });
  
});
crash01
Profil
Darker:
Myslím, že jsme se nepochopili. Nejde o to, jak volat funkce bez uvedení v kódu, ale o to, jak jim předávat různé parametry. To mám jako volat funkce přímo z HTML?
Darker
Profil
No a proč dané parametry nevypíšeš jako ragumenty funkce funkce?
Chamurappi
Profil
Reaguji na crasha01:
To mám jako volat funkce přímo z HTML?
Čemu to vadí?

použít vlastní HTML atributy
Mně to jako prasárna nepřijde. Pokud máš jistotou, že budeš jediný, kdo s tím atributem bude pracovat, tak si můžeš být jistý stoprocentní funkčností.
crash01
Profil
Darker, Chamurappi:
Protože chci mít tuto funkci přiřazenou třeba k více elementům, kde pokaždé bude volána s jinými parametry.


Chamurappi
Druhá věc je, že chci mít názvy funkcí mimo HTML třeba kvůli případné změně struktury - přejmenování funkcí, apod.
Darker
Profil
crash01:
kde pokaždé bude volána s jinými parametry.
Jaký je rozdíl mezi tím, když když parametry napíšeš do vlastních atributů a nebo je vypíšeš jako argumenty volaných funkcí?
<div onclick="funkce('<?=$params[$i]?>')"></div>
<div onclick="funkce(this.p)" p="<?=$params[$i]?>"></div>
crash01
Profil
Darker:
A kam mám ty parametry napsat, když tu JS funkci nevolám in-line => žádný atribut onlick.
Mám odchytávání událostí udělané v externím JS, uvedu příklad s jQuery.

// Javascript
  
$("#nejakeID").click(function () {
    // Získání parametru pro funkci (var atribut = ...) - např z vlastního atributu
    funkce(atribut);
})

// HTML soubor
...
<span class="tlacitko">Tlačítko 1</span>
<span class="tlacitko">Tlačítko 2</span>
...

A já potřebuju předat odlišené parametry pro tlačítko 1 a tlačítko 2.
Radek9
Profil
crash01:
<span class="tlacitko" data-atribut="nějaké informace">Tlačítko 1</span>
<script>
$(".tlacitko").click(function(){
  funkce(this.getAttribute("data-atribut"));
});
</script>
Edit: Teď mě napadlo, že to je třída, tak tam asi je spíš lepší ten jQ zápis.
Chamurappi
Profil
Reaguji na crasha01:
když tu JS funkci nevolám in-line => žádný atribut onlick
V tom spočívá ta moje otázka — proč se bráníš atributu onclick?

chci mít názvy funkcí mimo HTML třeba kvůli případné změně struktury - přejmenování funkcí, apod.
To je hodně hypotetický důvod, ne? Stejně tak bys mohl chtít změnit označení toho parametru a musel bys přejmenovat ten svůj vlastní atribut…
crash01
Profil
Chamurappi:
To je hodně hypotetický důvod, ne?
To asi je :D. Spíš jsem chtěl ten javascript přímo v HTML co nejvíc omezit - odsunout to jako CSS a propojení zajišťovat pouze přes id, class, tagname, atd. Celkově se mi tam ten kód s událostmi volanými přímo u elementu spíš nelíbí, ale přidávat vlastní atribut asi taky není úplně šťastná volba.

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: