Autor Zpráva
David1256
Profil
Dobrý den,

mám tento kód.

<a id="my-link">My link</a>
<script type="text/javascript">
  document.getElementById("my-link").onclick = pozdrav;
    function pozdrav() {
     alert("Ahoj");
    }
</script>

Toto normálně funguje a jakmile se klikne na odkaz s id "my-link", provede se funkce pozdrav(), tedy vyskočí okno s textem "Ahoj". Nicméně, já chci tento příklad obohatit o předávání parametru. Funkce pozdrav() by pak měla např. vypsat místo "Ahoj", to co je v parametru funkce pozdrav(). Tedy při pozdrav("Nazdar") by se vypsalo "Nazdar".

Vytvořil jsem tedy tento kód.

<a id="my-link">My link</a>
<script type="text/javascript">
  document.getElementById("my-link").onclick = pozdrav("Nazdar");
    function pozdrav(text) {
     alert(text);
    }
</script>

Ale to už nefunguje. Funkce se jednou zavolá při načtení stránky (vůbec nechápu proč) a pak už nejde znovu vyvolat, ať klikám na odkaz "My link" sebevíc. Nevíte prosím někdo, proč se to tak chová a jak to zprovoznit, aby to fungovalo tak, jak chci?

Děkuji.
juriad
Profil
David1256:
Musíš to uzavřít do další funkce:
<a id="my-link">My link</a>
<script type="text/javascript">
  document.getElementById("my-link").onclick = function() {pozdrav("Nazdar");};
    function pozdrav(text) {
     alert(text);
    }
</script>

Trocha teorie:
var x = pozdrav // x je funkce
var x = pozdrav("Ahoj") // x je výsledek té funkce po zavolání s parametrem "Ahoj"
Tedy, to co jsi napsal znamená: zavolej funkci pozdrav s parametrem "Ahoj" a výsledek té funkce (který mimochodem je undefined, protože nemáš v té funkci return) pak přiřaď do onclick. Jenže ty chceš do onclick přiřadit funkci.
Str4wberry
Profil
Případně ve funkci pozdrav vrátit funkci, která alert vypíše:

Živá ukázka
David1256
Profil
Díky moc oběma. Přesně to jsem potřeboval, ale vůbec jsem se k tomu nemohl progooglit.
_es
Profil
David1256:
Viď aj Časté potíže, zajímavosti a poučné debaty » Rozdíl mezi voláním funkce a funkcí.
Nejaké parametre si môžeš ukladať aj do samotného elementu:
<a id="my-link" data-p1="Nazdar">My link</a>
<script>
  document.getElementById("my-link").onclick = pozdrav;
    function pozdrav() {
     alert(this.getAttribute("data-p1"));
    }
</script>

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: