javascript - 在滚动事件中只运行一次 if 语句
问题描述
我有这段代码,我尝试只执行一次 if 语句。因此,用户在到达页面中间时只会看到一个警报显示,在跳过警报并继续滚动之后,他不应该再次收到警报。所以我添加了这个 PassedValue 布尔变量,但在显示警报时它不会更改为 true。
$f = $.noConflict();
$f(document).ready(function() {
$f(window).scroll(function() {
var scrollAmount = $f(window).scrollTop();
var documentHeight = $f(document).height();
var scrollPercent = (scrollAmount / documentHeight) * 100;
var PassedValue = false;
//$(".3amal").append(scrollPercent);
if (scrollAmount > documentHeight * 0.3 && !PassedValue) {
alert('the user scrolled once!');
PassedValue = true;
} else {
//alert('Nothing done nothing to save');
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="container">
<div id="sidebar">
<ul>
<li><a id="aboutlink" href="#" style="position: sticky;top: 0;">auck</a></li>
<li><a id="projectslink" href="#">Projects</a></li>
<li><a id="resumelink" href="#">Resume</a></li>
<li><a id="contactlink" href="#">Contact</a></li>
</ul>
</div>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
<div class="3amal">Hellow i'm here</div>
</div><br/><br/><br/>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
<div id="content">
<div class="" id="about">
<p class="header">uck</p>
<p class="info">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>
<div class="sections" id="projects">
<p class="header">Projects</p>
<p class="info">Projects</p>
</div>
<div class="sections" id="resume">
<p class="header">Resume</p>
<p class="info">Resume</p>
</div>
<div class="sections" id="contact">
<p class="header">Contact</p>
<p class="info">Contact</p>
</div>
</div>
</div>
解决方案
您可以创建一个外部变量,然后在if
语句中检查它:
// somewhere outside your handler/function
let reviewed = false;
// inside
if(scrollAmount > documentHeight*0.3 && !PassedValue && !reviewed) {
reviewed = true;
// your logic here
}
推荐阅读
- android - 在 href 中的 url 之前添加不安全的角度 - 清理不安全的 URL
- r - 使用 lubridate 检索会计年度的月份数
- google-apps-script - 发布新版 Google 表格插件
- swift - 无法以编程方式将文件图标图像添加到 xib 图像视图
- python - Pandas:如何在 MultiIndex 中格式化图例
- ruby-on-rails - 默认情况下,Rails 中的 created_at 是 Time.now.utc.to_date 吗?
- python - 无效的目录名称 Spyder Python
- java - 将类级别 @PreAuthorized 注释与方法级别 @PreAuthorzied 注释一起使用
- c# - 如何在 Windows 应用程序和许可证服务器之间建立安全连接?
- javascript - 如何显示和映射状态或 const 数据数组对象的第一个 id?