Autor Zpráva
Wdoleq
Profil *
Ahoj rád bych znal názor na druh postupů v JS.

Chci si na určitý seznam odkazů pověsit funkci


<a href="">odkaz 1</a><br />
<a href="">odkaz 2</a><br />
<a href="">odkaz 3</a>


1/ Framework jQuery
<script>
    $("a").click(function(e){

        alert($(this).text());
        e.preventDefault();
    })
</script>

2/ Pure JS
var links = document.getElementsByTagName("a");

    for (i = 0; i < links.length; i++)
    {
     links[i].onclick = function(){
        alert(this.innerHTML);
        return false;
    }
    }

3/ Nastavit odkazům přímo onclick
<a href="" onclick="foo();">odkaz 3</a>


Který způsob je dle Vás nejvhodnější, nejrychlejší a případně zda-li jsem na nějakou možnost zapomněl, prosím o doplnění, moc mi to pomůže v rozšíření obzorů.

Moderátor Chamurappi: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
_es
Profil
Druhý variant má chybičku, že je pre káždý odkaz vyrábaná iná funkcia a chýba príkaz var v cykle, lepšie by bolo:
function f(){ alert(this.innerHTML); return false; }
for (var i = 0; i < links.length; i++) links[i].onclick = f;
Existuje aj kolekcia document.links, ktorá zahŕňa len skutočné odkazy s href.

Wdoleq:
zda-li jsem na nějakou možnost zapomněl,
Môžeš použiť prebublávanie udalosti.
Wdoleq
Profil *
Děkuji uctivě. Documents.links znám, tento příklad je pouze orientační. Konkrétní ukázka probublávání je nějaká zbytečně složitá a pro mě ne zcela pochopitelná, rozhodně ovšem děkuji za ukázku kódu a vyjmutí anonymní funkce z cyklu.
Wdoleq
Profil *
Mohu ještě jeden dotaz?

Nevím jaký je rozdíl v zápisu, při použití se kód chová identicky.

1/

function foo()
{
  // code
}


2/

var foo = function()
{
  // code
}


Stačí kratké vysvětlení.


--------------------

http://diskuse.jakpsatweb.cz/?action=vthread&forum=8&topic=104625#5 a zajímalo by mne také co přesně znamená syntaxe void 0, k jakému účelu. :-)


Velmi děkuji a přeji dobrou noc.
_es
Profil
Wdoleq:
Nevím jaký je rozdíl v zápisu, při použití se kód chová identicky.
Premenná foo existuje v oboch prípadoch, v rovnakom kontexte, už pred príkazom.
No v druhom prípade má pred príkazom hodnotu undefined, zatiaľčo v prvom prípade sa pred aj za príkazom rovná tej funkcii.
Takže sa celkom identicky nechová.

co přesně znamená syntaxe void 0
Je to použitie operátora void, neslúži na nič iné, len na získanie hodnoty undefined. Ak nie je pri protokole javascript: posledná hodnota undefined, tak je aktuálny dokument tou poslednou hodnotou prepísaný.
Wdoleq
Profil *
__es:


Ohledně void děkuji, já jen že jsem viděl syntaxi void 0 místo void(0) tak mne to udivilo.
Ohledně volání funkcí, ma smysl tedy vůbec používat druhý způsob? Hodí se to někdy?

Děkuji, to bude pak již vše co jsem potřeboval vědět.
_es
Profil
Wdoleq:
že jsem viděl syntaxi void 0 místo void(0)
void hodnota a void(hodnota) je to isté, prvé je kratšie, druhé možno niekedy jasnejšie.

Ohledně volání funkcí, ma smysl tedy vůbec používat druhý způsob? Hodí se to někdy?
Premenná môže hocikedy odkazovať na ľubovolnú funkciu a prostredníctvom tej premennej sa dá funkcia aj volať. To každý programovací jazyk neumožňuje a dá sa to aj využiť. Premenná môže odkazovať v rôznom čase na rôzne funkcie.

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:

0