Autor | Zpráva | ||
---|---|---|---|
Jiří Ráb Profil |
#1 · Zasláno: 24. 5. 2019, 20:39:22
ahoj chtel jsem se vás zeptat jak je možné že mi píše pokud dám k <input type="button" value="Click me" onclick="test()"> po kliknutí na tlacitko zavolam funkci test() kde napíšu this.value a píše mi to nedefinovaná ale pokud dám onclick="test(this)" tak mi to vrátí value ?
|
||
RastyAmateur Profil |
#2 · Zasláno: 24. 5. 2019, 21:03:44
Zeptej se sám sebe, když nedáš to “this” jako argument, na co by to mělo ukazovat? Co by jsi v tom čekal? Je to naprosto nezávislá funkce, kterou můžeš použít kdekoliv, nejen v onclick(). Co by to “this” pak signalizovalo, kdyby jsi to použil někde uprostřed js, nebo uvnitř nějaké funkce?
|
||
Jiří Ráb Profil |
#3 · Zasláno: 24. 5. 2019, 22:54:52
ale pokud nastavím tomu button element.onclick=test; a ve funkci použiji this tak už mi to funguje i bez toho že by bylo to this uvnitř jako parametr funkce test
|
||
Keeehi Profil |
#4 · Zasláno: 25. 5. 2019, 11:03:21
Jiří Ráb:
Protože když použiješ onclick="test()" , tak je to stejné, jako kdyby jsi použil anonymní funkci.
element.onclick=function() { // tady this funguje test(); } Tvoje element.onclick=test; je vlastně úplně to stejné. Jen jako obsluhu té události nepřiřazuješ anonymní funkci ale nějakou pojmenovanou. Proto i v ní bude this fungovat. Ekvivalentem by bylo překopírovat obsah této funkce test přímo do atributu onclick.
|
||
Časová prodleva: 4 dny
|
|||
_es Profil |
#5 · Zasláno: 29. 5. 2019, 22:37:17
Keeehi:
„ // tady this funguje “
Neviem, čo presne si myslel tým „tady“, no pre kód vo funkcii test bude this objekt window .
|
||
Keeehi Profil |
#6 · Zasláno: 29. 5. 2019, 23:29:11
_es:
Tím tady jsem myslel přímo na místě toho komentáře :) Ne až někde uvnitř funkce test. |
||
_es Profil |
Jiří Ráb:
Môžeš si aj sám zvoliť, aké ma byť this vo volanej funkcii:test.call(element); test.call(this); this do ďalšej funkcie. Ak sa priradí element.onclick=test; this pri zavolaní funkcie po udalosti.
|
||
Časová prodleva: 5 let
|
0