Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在类的滚动位置添加和删除_Javascript_Css_Dom - Fatal编程技术网

Javascript 在类的滚动位置添加和删除

Javascript 在类的滚动位置添加和删除,javascript,css,dom,Javascript,Css,Dom,嘿,我正在尝试根据滚动位置添加一个类。 它在Jquery中起作用,但我想转到香草,它不起作用。 我错过了什么 如果用户滚动到30px位置,则应添加class.c-logo--scrolled 控制台错误: 未捕获的TypeError:无法读取未定义的属性“add” 在滚动条上添加类(app.min.js:17) app.min.js:29 var scrollPosition = window.scrollY; var logoContainer = document.getElementsBy

嘿,我正在尝试根据滚动位置添加一个类。 它在Jquery中起作用,但我想转到香草,它不起作用。 我错过了什么

如果用户滚动到30px位置,则应添加class.c-logo--scrolled

控制台错误:

未捕获的TypeError:无法读取未定义的属性“add” 在滚动条上添加类(app.min.js:17) app.min.js:29

var scrollPosition = window.scrollY;
var logoContainer = document.getElementsByClassName('js-logo');

window.addEventListener('scroll', function() {

    scrollPosition = window.scrollY;

    if (scrollPosition >= 30) {
        logoContainer.classList.add('c-logo--scrolled');
    } else {
        logoContainer.classList.remove('c-logo--scrolled');
    }

});
然后:

  • 将脚本放在正文的底部
  • 确保什么元素是真正滚动的-它并不总是窗口
  • -不支持IE
  • -IE10中的部分支持+

  • 我刚取下。。。但不知怎的,它说:无法读取运行的\u scrollahh上的add\u class\u未定义的属性“add”…为什么我必须添加[0],所以使用窗口不安全吗?还有更好的选择吗?@Karle,因为
    getElementsByClassName
    返回NodeList。但是您使用的是
    classList
    ,它是元素的属性,而不是列表的属性
    scrollY
    似乎在IE中不受支持(添加了答案链接),元素也可能依赖css。太棒了,非常感谢,我将使用pageYOffset来代替…感谢explanation@Karle,如果它解决了您的问题,请单击其左侧的复选标记接受答案。
    var logoContainer = document.getElementsByClassName('js-logo');
    
    var logoContainer = document.getElementsByClassName('js-logo')[0];