Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jquery variable in function

On pageload I set a variable

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

When I try to refer to that variable inside functions though, it doesn't work.

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

Why is this? And how can I get around it?

(rookie here)

like image 849
user1022585 Avatar asked Apr 05 '12 17:04

user1022585


2 Answers

You have a problem of scope, I suggest you read a little about it because you can improve your javascript a ton, but you could solve it in two general ways:

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

or

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

Also I recommend you read about clousures if you don't know how they work.

like image 83
nicosantangelo Avatar answered Sep 28 '22 01:09

nicosantangelo


If you declare a variable inside a function, the variable name will be inaccessible outside the scope of that function. Move the declaration outside the function:

var inv_count;
$(document).ready(function() {
    inv_count = 3;
});
like image 24
Michael Liu Avatar answered Sep 28 '22 01:09

Michael Liu