2012-04-30 61 views
7

tôi có mã này:jQuery/Javascript: Xác định biến toàn cục trong một hàm?

 var one; 
     $("#ma1").click(function() { 
      var one = 1; 
     }) 
     $("body").click(function() { 
      $('#status').html("This is 'one': "+one); 
     }) 

và khi tôi nhấp vào cơ thể, nó nói: Đây là 'một': không xác định. Làm thế nào tôi có thể định nghĩa một biến toàn cục được sử dụng trong một hàm khác?

Trả lời

17

Tháo var từ bên trong hàm.

$("#ma1").click(function() { 
     one = 1; 
    }) 
+6

Để mở rộng khi lý do tại sao các công trình này, khi bạn sử dụng 'var' bên trong hàm, bạn đã tạo một biến địa phương mới và riêng biệt. Bằng cách loại bỏ 'var', bạn về cơ bản nói rằng bạn muốn tra cứu chuỗi cho một biến được định nghĩa trước đó (trong trường hợp này là' một' toàn cầu). – Moses

+0

@Moses: Cảm ơn, đó là chính xác. –

+0

Cảm ơn sự giúp đỡ của bạn, Rocket. Điều đó đã cứu tôi. – SnarkyDTheman

11

Nếu bạn muốn thực hiện một biến toàn cầu ràng buộc nó để window đối tượng

window.one = 1; 
10
var one;//define outside closure 

    $("#ma1").click(function() { 
     one = 1; //removed var 
    }) 
    $("body").click(function(e) { 
     $('#status').html("This is 'one': "+one); 
    }) 
Các vấn đề liên quan