Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Rekurencja, a zmienne
Forum PHP.pl > Forum > Przedszkole
Dapi
Witam.

Na początek krótki fragmencik kodu:

Kod
$.fn.jakasfunkcja= function(iftrue, iffalse, rec){
    if(rec == false){
        $(document).scroll(function(){
            $(this).jakasfunkcja(iftrue, iffalse, true);
            alert('ok');
        });
    }
    // reszta kodu
};


W czym problem? W wartościach przekazywanych do funkcji w 4 linijce kodu.
Póki jakasfunkcja() wywoływana jest jeden raz na stronie dla JEDNEGO tylko elementu - nie ma problemu,
bo zmienne w tej funkcji przybierają wartość i nie zmieniają jej do "końca". Natomiast jeśli wywołam
funkcję więcej razy, dla różnych elementów, wówczas funkcja wywoływana w 4 linijce korzysta ze zmiennych
zadeklarowanych tylko dla ostatniego elementu.
Rozumiem dlaczego tak się dzieje i jak TEORETYCZNIE musiałby ten kod wyglądać, żeby działał, ale nie jestem
w stanie tego przelać z głowy do edytora.
W 4 linijce powinny się znajdować zmienne, które za każdym wywołaniem mają inną wartość, bądź zamiast zmiennych,
najlepiej tekst, czyli $('#element').jakasfunkcja('function(){}', 'function(){}', true);, ale tego nie jestem w stanie osiągnąć.

Być może rozwiązanie jest banalne, ale ja nad tym cały dzień dzisiaj przesiedziałem i powoli się zaczynam poddawać.
Może Wasze myśli pójdą w inną stronę i mam nadzieję pomożecie smile.gif
Helid
Kod
$(this).jakasfunkcja(iftrue, iffalse, true);

Jest wewnętrz funkcji
Kod
$(document).scroll(function(){

a nie
Kod
$.fn.jakasfunkcja= function(iftrue, iffalse, rec){


Zapisz więc wartości do zmiennych
Kod
$.fn.jakasfunkcja= function(iftrue, iffalse, rec){
var parametr = iftrue;
    if(rec == false){
        $(document).scroll(function(){
            $(this).jakasfunkcja(parametr, iffalse, true);
            alert('ok');
        });
    }
    // reszta kodu
};
Dapi
Kombinowałem ze zmiennymi, z tablicami, z niewiadomo czym jeszcze... a zapomniałem o banalnym przecież słówku var, które rozwiązuje problem.
Nie bardzo mam w tym momencie pojęcie dlaczego z var działa, a bez nie, ale będę miał przynajmniej zajęcie na wieczór smile.gif

Dzięki wielkie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.