2012-04-05 42 views
6

On pageload tôi đặt một biếnjquery biến trong chức năng

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

Khi tôi cố gắng đề cập đến biến mà bên trong chức năng, mặc dù nó không hoạt động.

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

Tại sao điều này? Và làm thế nào tôi có thể vượt qua nó?

(tân binh ở đây)

+0

biến 'inv_count' thành biến toàn cầu; nó nằm bên trong một hàm. viết nó bên ngoài hàm 'ready' – mshsayem

Trả lời

11

Nếu bạn khai báo một biến bên trong một hàm, tên biến sẽ không thể tiếp cận bên ngoài phạm vi chức năng đó. Di chuyển tờ khai bên ngoài các chức năng:

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

vì nó không phải là biến có thể truy cập trên toàn cầu. –

12

Bạn có một vấn đề của scope, tôi đề nghị bạn đọc một chút về nó bởi vì bạn có thể cải thiện của bạn javascript một tấn, nhưng bạn có thể giải quyết nó theo hai cách chung:

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); 
} 

hoặc

$(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; 
}); 

Ngoài ra tôi khuyên bạn nên đọc về clousures nếu bạn không biết làm thế nào họ làm việc.

+2

mèo rất tốt !!! – MCSI

Các vấn đề liên quan