【发布时间】:2017-02-28 00:35:47
【问题描述】:
在我创建的一个小网站上-click here 如果你想看的话。
无论如何,使用 jQuery,当你向下滚动时,你会被拉回来,顶部的文本会发生变化,并且一个变量会增加。根据变量的值,顶部的文本会相应更改。这里的问题是这个数字没有进一步改变。它只显示第一个文本,即如果变量等于 1,但不会进一步超过。这是带有一些注释的代码来表达我的意思。
FUN = 0; //Does not have "var" so it can be global to the following function
window.onscroll = function(ev) {
if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight) {
FUN++; //Adds one to FUN variable.
if(FUN==1){ //This stuff here executes just fine.
scream.playclip(); //This also works too; don't worry.
$("#text").replaceWith( "<h1>You should not have done that.</h1><br><img src='sck1.jpg'>" );
} else if(FUN==2){ //This doesn't happen.
$("#text").replaceWith( "<h1>Last chance to close the page.</h1>" );
}
$('html, body').animate({ scrollTop: 0 }, 'fast'); //This works- this is the thing that yanks the user's screen back up.
}
};
编辑:这打破了它......谢谢@Fabian。
console.log(FUN + " before ++")
FUN++;
console.log(FUN + " after ++")
【问题讨论】:
-
“没有“var”,因此它可以是以下函数的全局变量” 有趣的事实:使用
var,它仍然是以下函数的“全局变量”函数(即使不在全局范围内,也不是真正的全局),因为函数会关闭它。更多:How do JavaScript closures work? -
您的滚动回调可能触发得太快了,以至于
2的值从未为FUN注册。你为什么不直接使用if (FUN > 1)呢? -
请使用 Stack Snippets(
[<>]工具栏按钮)通过 runnable minimal reproducible example 更新您的问题。FUN++绝对会增加FUN,所以如果你没有看到你想要的效果,问题是别的,而不是它没有被增加。 -
这个有趣的事实并不有趣...哈哈无论如何,尝试添加一个
else块和console.log的FUN变量,也许滚动会很快,你是太快地增加你的变量会导致它没有进入第二个 if。 -
问题:您显示的代码在页面的哪个位置?什么触发它?在第一次滚动事件之后是否可以重新运行(这会将 FUN 重置为 0)? FWIW,我怀疑关于滚动射击太快的cmets是不正确的;如果是这样,我希望您第一次向下滚动时,您会看到第二个文本出现。我可能是错的;不是说绝对不是,但对我来说似乎不对。
标签: javascript jquery html