Autor | Zpráva | ||
---|---|---|---|
Mufna Profil |
#1 · Zasláno: 19. 6. 2010, 17:36:08 · Upravil/a: Mufna
Zdravím Vás. Prosím poraďte mi, kde mám chybu v následujícím kódu. V první funkci se mění proměnná "pos", tuto změnu má zachytit druhá funkce a předat číselnou hodnotu do třetí fce. Nechce mi to ale pořád fungovat. Když dám přímo číslo do 2. fce (třeba "4"), tak si to ta třetí fce vezme a funguje to OK. Ale pokud chci, aby se to číslo předalo z proměnné "pos", tak to nefunguje. Možná je to jen nějaká syntaktická chyba, ale nevím.
// inicializace proměnných var pos = 0; var posCheck = 0; // 1. fce nextBtn.bind("click", function() { pos += 1; if (pos == pictEls) { pos = pictEls-1; } nextBtn_enabled = false; var move = -(pictWidth*pos); container.find("p").animate({ left: move}, settings.easeTime, settings.easeFunc); return false; }); // 2. fce function positionChecking(pos) { posCheck = pos; // když tady dám přímo číslo: posCheck = 4; // tak to ve 3. fci funguje return posCheck; } positionChecking(); // 3. fce jQuery("div#svLinks" + j + " a").each(function(z) { if (z == posCheck) { jQuery(this).addClass("test"); } else jQuery(this).addClass("current"); jQuery(this).bind("click", function() { jQuery(this).addClass("current").parent().parent().find("a").not(jQuery(this)).removeClass("current"); pos = z; var move = -(pictWidth*z); container.find("p").animate({ left: move}, settings.easeTime, settings.easeFunc); return false; }); }); |
||
Chamurappi Profil |
#2 · Zasláno: 19. 6. 2010, 17:46:10
Reaguji na Mufnu:
„tuto změnu má zachytit druhá funkce“ Jak ji má zachytit? Pokud dobře čtu, tak positionChecking voláš jen jednou při zpracovávání celého tohoto skriptu (zřejmě při načítání).
|
||
Mufna Profil |
#3 · Zasláno: 19. 6. 2010, 18:07:52
Chamurappi
a jak to mám upravit ? Stačí obecná, ale konkrétní rada. Předem díky. |
||
Chamurappi Profil |
#4 · Zasláno: 19. 6. 2010, 18:12:14
Reaguji na Mufnu:
Nerozumím, co to má dělat. Nevím, proč existují proměnné pos a posCheck , proč to není jen jedna proměnná…
Pokud jsi předpokládal, že se zavolá funkce jen proto, že nazveš argument (což je lokální proměnná předvyplněná při zavolání funkce) stejně jako globální proměnnou, tak máš o JS docela zkreslenou představu. |
||
Mufna Profil |
#5 · Zasláno: 19. 6. 2010, 19:17:58 · Upravil/a: Mufna
Chamurappi
Nevím, proč existují proměnné pos a posCheck o "něco" jsem se tím snažil. Obecně mi to taky vadí a přijde zbytečné, ale nějak jsem to prostě chtěl "ukuchtit" skrz tu "meziproměnnou". Nerozumím, co to má dělat. Chronologicky (a obecně) toto: 1) pokud se klikne na button (první funkce), tak se proměnná "pos" zvětší o 1 2) tato nová hodnota proměnné "pos" se následně předá do 3. funkce Toť vše. Ta podmínka ve 3. funkci, tedy z == posCheck (nebo jen: z == pos, když to půjde) není teď podstatná, tu si pak upravím dle toho, co to bude dělat a co budu potřebovat, důležitý je pouze to, aby se tam vždy dostala hodnota z proměnné posCheck (nebo jen pos). Ta se mění, když uživatel klikne na button - což je jQuery objekt "nextBtn" - ten je někde na začátku definován: var nextBtn = jQuery("a#svArrowRight" + j); Můžeš mi prosím Chamurappi v tomto poradit ? |
||
Chamurappi Profil |
#6 · Zasláno: 19. 6. 2010, 20:35:27
Reaguji na Mufnu:
„tato nová hodnota proměnné "pos" se následně předá do 3. funkce“ Tou třetí funkcí myslíš volání, které při načtení stránky cosi dělá s nějakými odkazy? To se pochopitelně zavolá jen při načítání. Jestli se má něco dít při kliknutí, musíš to dát do funkce, která se vykonává při kliknutí. |
||
Mufna Profil |
#7 · Zasláno: 19. 6. 2010, 21:04:16
Chamurappi
Jestli se má něco dít při kliknutí, musíš to dát do funkce, která se vykonává při kliknutí. jj, zkouším to nějak ukuchtit, zatím jsem se dostal k tomuhle (vyhodil jsem z toho ty věci, které se netýkají přímo toho, co teď chci udělat): // 1. fce - upraveno nextBtn.bind("click", function() { pos += 1; nextBtn_enabled = false; positionChecking(); return false; }); // 2. fce function positionChecking() { alert(pos); // test return pos; } positionChecking(); // 3. fce - tady jsem zatím ale "ztvrdnul", pořád nevím jak tam mám tu hodnotu dostat // tady to na žádný kliknutí reagovat nemá - ten další kód samozřejmě ano, ale to už se netýká // toho o co se snažím jQuery("div#svLinks" + j + " a").each(function(z) { if (z == pos) { jQuery(this).addClass("test"); } else jQuery(this).addClass("current"); jQuery(this).bind("click", function() { jQuery(this).addClass("current").parent().parent().find("a").not(jQuery(this)).removeClass("current"); pos = z; var move = -(pictWidth*z); container.find("p").animate({ left: move}, settings.easeTime, settings.easeFunc); return false; }); }); |
||
Mufna Profil |
#8 · Zasláno: 19. 6. 2010, 21:40:20
No tak jsem to ještě jednou celý přehodnotil :-) ... a začal jsem úplně jinak (doufám že teď už to bude správná cesta). Díky všem, kteří reagovali na mé tápání.
|
||
Časová prodleva: 14 let
|
0