Javascript 屏幕调整大小后使用旧值滚动事件
我希望你做得很好,并祝你新年快乐 我试图用jquery完成一件简单的事情。我想有一个函数,可以在加载时调用,调整大小,并在其中有一个滚动事件监听器。此函数在加载时设置一个标志,该标志在scroll事件中用于执行某些计算 这是我的密码: jQueryJavascript 屏幕调整大小后使用旧值滚动事件,javascript,jquery,resize,Javascript,Jquery,Resize,我希望你做得很好,并祝你新年快乐 我试图用jquery完成一件简单的事情。我想有一个函数,可以在加载时调用,调整大小,并在其中有一个滚动事件监听器。此函数在加载时设置一个标志,该标志在scroll事件中用于执行某些计算 这是我的密码: jQuery function rezval() { var alpha = false; document.getElementById('output').innerHTML = ''; window.addEventListener(
function rezval() {
var alpha = false;
document.getElementById('output').innerHTML = '';
window.addEventListener('scroll', function(e){
//Some calculations here
document.getElementById('output').innerHTML += alpha + '\r';
alpha = true; //Updating flag
});
}
$(window).resize(function() {
rezval();
});
$(window).load(function() {
rezval();
});
HTML
我希望此函数在调用/调用变量“alpha”时将其值设置为false(最初),并在滚动事件结束时更新flag的值(稍后我将使用if条件和用于计算的标志)。我输出alpha的值只是为了突出问题
当我第一次运行load函数时,它工作得非常好。我得到以下输出:
false true true true...
当我调整窗口大小时,问题就出现了。我得到的输出类似于
true false false false true true true.....
我不明白为什么会出现这种情况
1) 当它应该为false时,作为第一个输出为True。它就像滚动事件一样缓存变量并调用它
2) 当应该只有一个输出时,输出中有多个false
我还设置了一个JSFIDLE来复制此问题:
任何帮助都将不胜感激。先谢谢你 您需要全局初始化
alpha变量
var alpha = false; // alpha is global here, now
function rezval() {
document.getElementById('output').innerHTML = '';
window.addEventListener('scroll', function(e){
//Some calculations here
document.getElementById('output').innerHTML += alpha + '\r';
alpha = true; //Updating flag
});
}
// also you need to reinit again in resize function
$(window).on('resize', function() {
alpha = false;
rezval();
}).resize();
var alpha=false;
函数rezval(){
document.getElementById('output')。innerHTML='';
window.addEventListener('scroll',函数(e){
document.getElementById('output')。innerHTML+=alpha+'\r';
α=真;
});
}
$(窗口).on('resize',function()){
α=假;
rezval();
}).resize();
正文{
高度:2000px;
背景:#333;
溢出x:隐藏;
}
.输出部门{
字体大小:14px;
颜色:#fff;
宽度:1000px;
}
试试这个
var alpha = false;
function rezval() {
document.getElementById('output').innerHTML = '';
window.addEventListener('scroll', function(e){
document.getElementById('output').innerHTML += alpha + '\r';
alpha = true;
});
}
$(window).on('resize', function() {
alpha = false;
rezval();
}).resize();
感谢您的帮助,但是如果变量alpha在屏幕上不在函数范围内,我如何重置它的值呢?请参阅我更新的答案和演示,在整个页面中运行代码片段以查看调整大小事件和滚动条。太好了。非常感谢你帮助我,太好了。非常感谢你帮助我。
var alpha = false; // alpha is global here, now
function rezval() {
document.getElementById('output').innerHTML = '';
window.addEventListener('scroll', function(e){
//Some calculations here
document.getElementById('output').innerHTML += alpha + '\r';
alpha = true; //Updating flag
});
}
// also you need to reinit again in resize function
$(window).on('resize', function() {
alpha = false;
rezval();
}).resize();
var alpha = false;
function rezval() {
document.getElementById('output').innerHTML = '';
window.addEventListener('scroll', function(e){
document.getElementById('output').innerHTML += alpha + '\r';
alpha = true;
});
}
$(window).on('resize', function() {
alpha = false;
rezval();
}).resize();