Javascript 设置全局变量并换行$(窗口)。加载
我正试图设置一些Js变量来计算一些高度和偏移量,但我需要在页面加载b/c后这样做,我已经有了第三方广告加载和移动 因此,问题是: 我得到的是:Javascript 设置全局变量并换行$(窗口)。加载,javascript,variables,global,Javascript,Variables,Global,我正试图设置一些Js变量来计算一些高度和偏移量,但我需要在页面加载b/c后这样做,我已经有了第三方广告加载和移动 因此,问题是: 我得到的是: var sidebarHeight = $('.sidebar').height(), sidebarOffset = $('.sidebar').offset().top; 但除非我这样做,否则这些都不会被纠正: $(window).on('load', function(){ var sidebarHeight = $('.side
var sidebarHeight = $('.sidebar').height(),
sidebarOffset = $('.sidebar').offset().top;
但除非我这样做,否则这些都不会被纠正:
$(window).on('load', function(){
var sidebarHeight = $('.sidebar').height(),
sidebarOffset = $('.sidebar').offset().top;
});
$(window).on('load', function(){
window.sidebarHeight = $('.sidebar').height();
window.sidebarOffset = $('.sidebar').offset().top;
});
var MY_PROJET_NAMESPACE = MY_PROJET_NAMESPACE || {};
$(window).on('load', function(){
MY_PROJET_NAMESPACE.sidebarHeight = $('.sidebar').height();
MY_PROJET_NAMESPACE.sidebarOffset = $('.sidebar').offset().top;
});
var sidebarHeight;
var sidebarOffset;
$(window).on('load', function(){
sidebarHeight = $('.sidebar').height();
sidebarOffset = $('.sidebar').offset().top;
});
$(window).on('load', function(){
window.sidebarHeight = $('.sidebar').height();
window.sidebarOffset = $('.sidebar').offset().top;
});
但问题是这些变量不是全局变量——它们是该函数的局部变量,因此不能被其他函数重用
那么问题就来了:如何设置它,使这些变量设置在window.load上,但仍然是全局变量,可供其他函数使用 全局声明:
var sidebarHeight, sidebarOffset;
var sidebarHeight, sidebarOffset;
$(window).on('load', function(){
sidebarHeight = $('.sidebar').height();
sidebarOffset = $('.sidebar').offset().top;
});
本地设置:
$(window).on('load', function(){
sidebarHeight = $('.sidebar').height();
sidebarOffset = $('.sidebar').offset().top;
});
它们的声明和设置之间没有一个值,所以其他使用它们的代码可能需要考虑这一点。但如果您需要它们位于全局范围内,则只需在全局范围内声明它们。全局声明:
var sidebarHeight, sidebarOffset;
var sidebarHeight, sidebarOffset;
$(window).on('load', function(){
sidebarHeight = $('.sidebar').height();
sidebarOffset = $('.sidebar').offset().top;
});
本地设置:
$(window).on('load', function(){
sidebarHeight = $('.sidebar').height();
sidebarOffset = $('.sidebar').offset().top;
});
它们的声明和设置之间没有一个值,所以其他使用它们的代码可能需要考虑这一点。但是如果您需要它们在全局范围内,那么只需在全局范围内声明它们。全局变量是不好的做法,应该避免 对于您的问题,将其设置为全局是很容易的。您只需将它们附加到窗口,如下所示:
$(window).on('load', function(){
var sidebarHeight = $('.sidebar').height(),
sidebarOffset = $('.sidebar').offset().top;
});
$(window).on('load', function(){
window.sidebarHeight = $('.sidebar').height();
window.sidebarOffset = $('.sidebar').offset().top;
});
var MY_PROJET_NAMESPACE = MY_PROJET_NAMESPACE || {};
$(window).on('load', function(){
MY_PROJET_NAMESPACE.sidebarHeight = $('.sidebar').height();
MY_PROJET_NAMESPACE.sidebarOffset = $('.sidebar').offset().top;
});
var sidebarHeight;
var sidebarOffset;
$(window).on('load', function(){
sidebarHeight = $('.sidebar').height();
sidebarOffset = $('.sidebar').offset().top;
});
$(window).on('load', function(){
window.sidebarHeight = $('.sidebar').height();
window.sidebarOffset = $('.sidebar').offset().top;
});
或者,只需在全球范围内声明:
var sidebarHeight, sidebarOffset;
var sidebarHeight, sidebarOffset;
$(window).on('load', function(){
sidebarHeight = $('.sidebar').height();
sidebarOffset = $('.sidebar').offset().top;
});
<>但是,我强烈建议避免这样做,或者考虑在项目中使用一些名称间距,例如:
$(window).on('load', function(){
var sidebarHeight = $('.sidebar').height(),
sidebarOffset = $('.sidebar').offset().top;
});
$(window).on('load', function(){
window.sidebarHeight = $('.sidebar').height();
window.sidebarOffset = $('.sidebar').offset().top;
});
var MY_PROJET_NAMESPACE = MY_PROJET_NAMESPACE || {};
$(window).on('load', function(){
MY_PROJET_NAMESPACE.sidebarHeight = $('.sidebar').height();
MY_PROJET_NAMESPACE.sidebarOffset = $('.sidebar').offset().top;
});
var sidebarHeight;
var sidebarOffset;
$(window).on('load', function(){
sidebarHeight = $('.sidebar').height();
sidebarOffset = $('.sidebar').offset().top;
});
$(window).on('load', function(){
window.sidebarHeight = $('.sidebar').height();
window.sidebarOffset = $('.sidebar').offset().top;
});
这将防止全局名称空间污染(在全局作用域中只有一个全局变量)全局变量是不好的做法,应该避免 对于您的问题,将其设置为全局是很容易的。您只需将它们附加到窗口,如下所示:
$(window).on('load', function(){
var sidebarHeight = $('.sidebar').height(),
sidebarOffset = $('.sidebar').offset().top;
});
$(window).on('load', function(){
window.sidebarHeight = $('.sidebar').height();
window.sidebarOffset = $('.sidebar').offset().top;
});
var MY_PROJET_NAMESPACE = MY_PROJET_NAMESPACE || {};
$(window).on('load', function(){
MY_PROJET_NAMESPACE.sidebarHeight = $('.sidebar').height();
MY_PROJET_NAMESPACE.sidebarOffset = $('.sidebar').offset().top;
});
var sidebarHeight;
var sidebarOffset;
$(window).on('load', function(){
sidebarHeight = $('.sidebar').height();
sidebarOffset = $('.sidebar').offset().top;
});
$(window).on('load', function(){
window.sidebarHeight = $('.sidebar').height();
window.sidebarOffset = $('.sidebar').offset().top;
});
或者,只需在全球范围内声明:
var sidebarHeight, sidebarOffset;
var sidebarHeight, sidebarOffset;
$(window).on('load', function(){
sidebarHeight = $('.sidebar').height();
sidebarOffset = $('.sidebar').offset().top;
});
<>但是,我强烈建议避免这样做,或者考虑在项目中使用一些名称间距,例如:
$(window).on('load', function(){
var sidebarHeight = $('.sidebar').height(),
sidebarOffset = $('.sidebar').offset().top;
});
$(window).on('load', function(){
window.sidebarHeight = $('.sidebar').height();
window.sidebarOffset = $('.sidebar').offset().top;
});
var MY_PROJET_NAMESPACE = MY_PROJET_NAMESPACE || {};
$(window).on('load', function(){
MY_PROJET_NAMESPACE.sidebarHeight = $('.sidebar').height();
MY_PROJET_NAMESPACE.sidebarOffset = $('.sidebar').offset().top;
});
var sidebarHeight;
var sidebarOffset;
$(window).on('load', function(){
sidebarHeight = $('.sidebar').height();
sidebarOffset = $('.sidebar').offset().top;
});
$(window).on('load', function(){
window.sidebarHeight = $('.sidebar').height();
window.sidebarOffset = $('.sidebar').offset().top;
});
这将防止全局名称空间污染(在全局范围内只有一个全局变量)我可以想出两种方法来实现这一点 第一条路: 您只需在globalScope上声明变量,但不指定任何值。然后,在onLoad时,将值分配给它们,如下所示:
$(window).on('load', function(){
var sidebarHeight = $('.sidebar').height(),
sidebarOffset = $('.sidebar').offset().top;
});
$(window).on('load', function(){
window.sidebarHeight = $('.sidebar').height();
window.sidebarOffset = $('.sidebar').offset().top;
});
var MY_PROJET_NAMESPACE = MY_PROJET_NAMESPACE || {};
$(window).on('load', function(){
MY_PROJET_NAMESPACE.sidebarHeight = $('.sidebar').height();
MY_PROJET_NAMESPACE.sidebarOffset = $('.sidebar').offset().top;
});
var sidebarHeight;
var sidebarOffset;
$(window).on('load', function(){
sidebarHeight = $('.sidebar').height();
sidebarOffset = $('.sidebar').offset().top;
});
$(window).on('load', function(){
window.sidebarHeight = $('.sidebar').height();
window.sidebarOffset = $('.sidebar').offset().top;
});
第二条路(我最喜欢):
可以在窗口对象本身上创建额外属性。由于窗口对象引用是全局的,所以您的额外属性也是全局的。这样做:
$(window).on('load', function(){
var sidebarHeight = $('.sidebar').height(),
sidebarOffset = $('.sidebar').offset().top;
});
$(window).on('load', function(){
window.sidebarHeight = $('.sidebar').height();
window.sidebarOffset = $('.sidebar').offset().top;
});
var MY_PROJET_NAMESPACE = MY_PROJET_NAMESPACE || {};
$(window).on('load', function(){
MY_PROJET_NAMESPACE.sidebarHeight = $('.sidebar').height();
MY_PROJET_NAMESPACE.sidebarOffset = $('.sidebar').offset().top;
});
var sidebarHeight;
var sidebarOffset;
$(window).on('load', function(){
sidebarHeight = $('.sidebar').height();
sidebarOffset = $('.sidebar').offset().top;
});
$(window).on('load', function(){
window.sidebarHeight = $('.sidebar').height();
window.sidebarOffset = $('.sidebar').offset().top;
});
无论您在哪里再次需要该值,都可以读取window.sidebarHeight
或window.sidebarOffset
希望能有所帮助。我可以想出两种方法来实现这一点 第一条路: 您只需在globalScope上声明变量,但不指定任何值。然后,在onLoad时,将值分配给它们,如下所示:
$(window).on('load', function(){
var sidebarHeight = $('.sidebar').height(),
sidebarOffset = $('.sidebar').offset().top;
});
$(window).on('load', function(){
window.sidebarHeight = $('.sidebar').height();
window.sidebarOffset = $('.sidebar').offset().top;
});
var MY_PROJET_NAMESPACE = MY_PROJET_NAMESPACE || {};
$(window).on('load', function(){
MY_PROJET_NAMESPACE.sidebarHeight = $('.sidebar').height();
MY_PROJET_NAMESPACE.sidebarOffset = $('.sidebar').offset().top;
});
var sidebarHeight;
var sidebarOffset;
$(window).on('load', function(){
sidebarHeight = $('.sidebar').height();
sidebarOffset = $('.sidebar').offset().top;
});
$(window).on('load', function(){
window.sidebarHeight = $('.sidebar').height();
window.sidebarOffset = $('.sidebar').offset().top;
});
第二条路(我最喜欢):
可以在窗口对象本身上创建额外属性。由于窗口对象引用是全局的,所以您的额外属性也是全局的。这样做:
$(window).on('load', function(){
var sidebarHeight = $('.sidebar').height(),
sidebarOffset = $('.sidebar').offset().top;
});
$(window).on('load', function(){
window.sidebarHeight = $('.sidebar').height();
window.sidebarOffset = $('.sidebar').offset().top;
});
var MY_PROJET_NAMESPACE = MY_PROJET_NAMESPACE || {};
$(window).on('load', function(){
MY_PROJET_NAMESPACE.sidebarHeight = $('.sidebar').height();
MY_PROJET_NAMESPACE.sidebarOffset = $('.sidebar').offset().top;
});
var sidebarHeight;
var sidebarOffset;
$(window).on('load', function(){
sidebarHeight = $('.sidebar').height();
sidebarOffset = $('.sidebar').offset().top;
});
$(window).on('load', function(){
window.sidebarHeight = $('.sidebar').height();
window.sidebarOffset = $('.sidebar').offset().top;
});
无论您在哪里再次需要该值,都可以读取window.sidebarHeight
或window.sidebarOffset
希望这会有所帮助。为什么不在全局范围中声明它们并在onLoad中填充它们呢?要实现这一点,您只需使用第一个示例,而不需要指定任务。然后,您将使用第二个示例,在没有var关键字的情况下(这只是对全局范围中声明的vars的赋值),我更喜欢显式的
窗口['sidebarHeight']=…
,但我也将全局SIDEBAR_HEIGHT
大写;也可以代替$(窗口)。在('load'
上,您可能需要执行$(文档)。在(“加载”
,因为您实际上是在填充文档内容之后,而不是在打开浏览器窗口。为什么不在全局范围中声明它们并在onLoad中填充它们呢?要实现这一点,您只需使用第一个示例,而不使用赋值。然后,您将使用第二个示例,而不使用var关键字(这只是对全局作用域上声明的变量的赋值)我更喜欢显式的window['sidebarHeight']=…
,但我也将全局SIDEBAR\u HEIGHT
;而不是$(window)。在('load'
上,您可能需要执行$(文档)。on(“加载”
,因为您实际上是在填充文档内容之后,而不是在打开浏览器窗口。