更改全局变量值jQuery

时间:2016-02-28 12:15:55

标签: jquery

尝试在jQuery中更改滚动值。

var a= 10;
$(window).scroll(function() {
  a= $(this).scrollTop();
});

console.log(a);

这是小提琴:https://jsfiddle.net/jpb2rfxa/

仍然控制台显示10.如何更改值?

2 个答案:

答案 0 :(得分:0)

在Javscript或jquery中,变量的范围是有用的..即变量' a'你在window.scroll函数中得到了更新,但是当用户实际滚动你附加到它的元素时,它会这样做。并且您正在打印以记录相同的原始值。

如果您在scroll函数中移动console.log,您可能会看到预期的结果..当您执行滚动事件时,它将在控制台中打印。

var a= 10;
$(window).scroll(function() {
a= $(this).scrollTop();
console.log(a);
});

答案 1 :(得分:0)

我明白你想要什么,但我不明白为什么你不明白代码的作用。

var a = 10;
$(window).scroll(function() {
  var a = $(this).scrollTop();
  console.log(a);
});

此代码将更改每个滚动条上的a值,输出每个滚动事件的值。因此,console.log将在每个滚动条上发生。

var a = 10;
$(window).scroll(function() {
  a = $(this).scrollTop();
});

console.log(a);

在此代码中,每个滚动条仍然会更改。但是,console.log只会被调用一次,即第一次读取文件 - 不进行任何滚动。这是因为.scroll是一个事件处理程序,只在事件发生时触发(在这种情况下是滚动)。所以首先console.log将发生(只有一次)并且因为用户还没有滚动,值将是10.如果用户然后滚动,则值将改变但是console.log不再被调用,所以你在控制台中看不到新值(即使已经更改了!)。

我假设您希望每次更改时都在函数中使用a的值,但如果是这样,则不是这样做的。然后,您需要在scroll事件中调用该函数,因为您希望每次都使用新值调用该函数。

var a = 10;
$(window).scroll(function() {
  var a = $(this).scrollTop();
  logging(a);
});

function logging(val) {
  console.log(val);
}