2012-04-05 20 views
6

Na pageload ustawić zmiennąjQuery zmienny w funkcji

$(document).ready(function() { 
    var inv_count = 3; 
    }); 

Gdy próbuję odwołać się do tej zmiennej wewnątrz funkcji, chociaż, to nie działa.

function blah(a,b) { 
    alert (inv_count); 
    } 

Dlaczego tak jest? Jak mogę to obejść?

(rekrut tutaj)

+0

make 'inv_count' zmienna globalna; to jest wewnątrz funkcji. zapisz go poza funkcją "ready" – mshsayem

Odpowiedz

11

Jeśli zadeklarujesz zmienną wewnątrz funkcji, nazwa zmiennej będą niedostępne poza zakresem tej funkcji. Przesuń deklarację poza funkcją:

var inv_count; 
$(document).ready(function() { 
    inv_count = 3; 
}); 
+0

, ponieważ nie jest to globalnie dostępna zmienna. –

12

Masz problem scope, proponuję poczytać trochę o tym, ponieważ można poprawić javascript mnóstwo, ale można go rozwiązać w dwóch ogólnych sposobów:

var inv_count; //you declare your variable in a global scope, it's not very good practice 
$(document).ready(function() { 
    inv_count = 3; 
}); 
function blah(a,b) { 
    alert (inv_count); 
} 

lub

$(document).ready(function() { 
    var inv_count = 3; 

    function blah(a,b) { 
     alert (inv_count); 
    } 
    //you declare everything inside the scope of jQuery, if you want to acess blah outside use: 
    //window.blah = blah; 
}); 

również polecam przeczytać o clousures, jeśli nie wiem, jak one działają.

+2

bardzo dobry kot !!! – MCSI