javascript - 滚动到 div 内的底部会触发警报(纯 JavaScript)

标签 javascript

我知道这里已经有解决方案,但大多数解决方案都是用 jQuery 编写的,JS 版本是基于窗口的,但我需要一个有效的方法

对于 div 和个人原因,我需要用纯 JavaScript 来完成此操作。所以基本上,当用户在 div 调用 a 内一直滚动到底部时,我需要触发警报,并且我不是指窗口的滚动条只是为了消除困惑。

document.querySelector('#a').addEventListener('scroll',scrollTrigger);

function scrollTrigger(){
  if(???){
    alert('End of scroll');
  }
}
#a{
  background-color: red;
  height: 500px;
  width: 500px;
  overflow: auto;
}
<div id='a'>
  <h1>a</h1>
   <h1>a</h1>
   <h1>a</h1>
   <h1>a</h1>
   <h1>a</h1>
   <h1>a</h1>
   <h1>a</h1>
   <h1>a</h1>
   <h1>a</h1>
   <h1>a</h1>
   <h1>a</h1>
   <h1>a</h1>
</div><!--</a>-->

最佳答案

document.querySelector('#a').addEventListener('scroll', scrollTrigger);

function scrollTrigger() {

  var el = this;
  var sc = el.scrollHeight - el.clientHeight - el.scrollTop;
  console.clear(); console.log(sc)

  if (sc === 0) {
    console.log('End of scroll');
  }
}
#a {
  height: 180px;
  overflow: auto;
}
<div id='a'>
  <h1>a---</h1>
  <h1>a</h1>
  <h1>a</h1>
  <h1>a</h1>
  <h1>a</h1>
  <h1>a</h1>
  <h1>a</h1>
  <h1>a</h1>
  <h1>a</h1>
  <h1>a</h1>
  <h1>a</h1>
  <h1>a---</h1>
</div>

如果您想要 0...1 中的值

var sc =  el.scrollTop / (el.scrollHeight - el.clientHeight );

1 将指示元素完全滚动:

document.querySelector('#a').addEventListener('scroll', scrollTrigger);

function scrollTrigger() {

  var el = this;
  var sc = el.scrollTop / (el.scrollHeight - el.clientHeight);
  console.clear(); console.log(sc)

  if (sc === 1) {
    console.log('End of scroll');
  }
}
#a {
  height: 180px;
  overflow: auto;
}
<div id='a'>
  <h1>a---</h1>
  <h1>a</h1>
  <h1>a</h1>
  <h1>a</h1>
  <h1>a</h1>
  <h1>a</h1>
  <h1>a</h1>
  <h1>a</h1>
  <h1>a</h1>
  <h1>a</h1>
  <h1>a</h1>
  <h1>a---</h1>
</div>

* 100 并且您有百分比;)

关于javascript - 滚动到 div 内的底部会触发警报(纯 JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52328359/

相关文章:

javascript - 如何在第 n 个空格处将一个长字符串一分为二?

Javascript ES5/ES6 类和错误处理

javascript - 如何使用 CoffeeScript API 来操作 AST 并写入 .coffee 输出

javascript - safari 浏览器 toLocaleString() 的替代方案

javascript - 如何判断数组中的元素是否重复?

javascript - html5shiv JS 在其他脚本之前或之后加载有关系吗? (页面加载时间)

javascript - 如何检查属性的文本是否包含部分参数标题(不区分大小写)?

javascript - 在 Firefox 中渲染内联 SVG

javascript - Firebase 云存储集合映射与 forEach

javascript - Firefox 不会过渡到下一张图片