6

在页面加载时,我设置了一个变量

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

但是,当我尝试在函数中引用该变量时,它不起作用。

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

为什么是这样?我怎样才能绕过它?

(这里是新手)

4

2 回答 2

13

你有一个范围问题,我建议你阅读一下,因为你可以改进你的 javascript 很多,但是你可以通过两种一般的方式来解决它:

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

或者

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

如果您不知道它们是如何工作的,我还建议您阅读有关clousures的信息。

于 2012-04-05T17:19:11.597 回答
11

如果您在函数内声明变量,则该变量名将无法在该函数范围之外访问。将声明移到函数外:

var inv_count;
$(document).ready(function() {
    inv_count = 3;
});
于 2012-04-05T17:15:45.483 回答