Autor Zpráva
quatzael
Profil
v JS mám různý metody k jednomu objektu a část scriptu je v nich hodně podobná. Chtěl bych to nahradit funkcí. Úplně ideální by bylo, kdyby šlo použít něco jako include v PHP.

V metodě mám například:

$('#specific').find(".trida-specific").val(this.specific);

Všude, kde je slovo specific, bych potřeboval, aby tam tam funkce dosazovala hodnoty podle argumentů té funkce a to this, aby samozřejmě platilo, pro ten konkrétní objekt..

takže by to mohlo vypadat nějak takhle:

function (arg1, arg2, arg3)
{
$('#' + arg1).find('.trida-' + arg2).val(this.arg3);
}

Ale nevím jak se tam bude chovat to this..

Můžete plís někdo poradit??
Joker
Profil
quatzael:
Celkem logicky this nebude fungovat, pokud se to nespustí v kontextu toho daného objektu.
Ale samozřejmě objekt může sám sebe předat jako argument (například foo(this)).
Místo this.arg3 by tam asi mělo být jen arg3 a volající by měl správně nastavit hodnotu.
Radek9
Profil
Hádám, že spíš potřebuje tohle: this[arg3]. Niceméně to stále neřeší problém s this. Bude to fungovat jen v případě, že to bude další metoda, nebo to budeš volat s call. ;-)
quatzael
Profil
Radek9:
Jo, udělal jsem to jako další metodu objektu a funguje to. Díky!


No ale teď mi to sem tam hází tuhle chybu:

Sizzle.error = function( msg ) {
    throw new Error( "Syntax error, unrecognized expression: " + msg );
};

Je to z jQuery (řádek 4178)
Radek9
Profil
quatzael:
To je jen místo, odkud se vyvolává. Spíš pošli finální obsah té výjimky a případně i živou ukázku. Na tom bysme to viděli nejlépe.
quatzael
Profil
Radek9:
už jsem to vyřešil. Omylem jsem zkombinoval uvozovky: ' a ". Nahrazoval jsem tam nějaký části pomocí ctrl+H a neuvědomil jsem si, že tam mám někde uvozovky jinak..

Teď to už funguje. Dík moc!

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: