我正在尝试设置一些 Js 变量来计算一些高度和偏移量,但我需要在页面加载后执行此操作,因为我已经加载了第 3 方广告并进行了移动。
所以问题是:
我得到的是:
var sidebarHeight = $('.sidebar').height(),
sidebarOffset = $('.sidebar').offset().top;
但是除非我像这样得到它们,否则这些不会被设置正确:
$(window).on('load', function(){
var sidebarHeight = $('.sidebar').height(),
sidebarOffset = $('.sidebar').offset().top;
});
但问题是这些变量不是全局的 - 它们是该函数的本地变量,因此不能被其他函数重用。
那么问题:我该如何设置,以便这些变量在 window.load 上设置,但仍然是全局的并且可供其他函数使用?
最佳答案
全局变量是不好的做法,应该避免!
对于你的问题,将它们设置为全局很容易。您可以将它们附加到窗口,如下所示:
$(window).on('load', function(){
window.sidebarHeight = $('.sidebar').height();
window.sidebarOffset = $('.sidebar').offset().top;
});
或者,只需全局声明它们:
var sidebarHeight, sidebarOffset;
$(window).on('load', function(){
sidebarHeight = $('.sidebar').height();
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;
});
这将防止全局 namespace 污染(全局范围内只有一个全局变量)
关于javascript - 设置全局变量并包装在 $(window).load 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30447604/