6

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)

1
  • make inv_count a global variable; it is inside a function. write it outside the ready function Commented Apr 5, 2012 at 17:15

2 Answers 2

13

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.

Sign up to request clarification or add additional context in comments.

Comments

11

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

1 Comment

because its not a globally accessible variable.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.