未捕获的TypeError:无法读取null的属性'classList'

时间:2014-11-17 10:28:36

标签: javascript jquery

嗨我试图制作一个缩小的标题,我几乎让它工作但我继续得到js文件的这一部分的上述错误

var cbpAnimatedHeader = (function() {

var docElem = document.documentElement,
    header = document.querySelector( '.cbp-af-header' ),
    didScroll = false,
    changeHeaderOn = 300;

function init() {
    window.addEventListener( 'scroll', function( event ) {
        if( !didScroll ) {
            didScroll = true;
            setTimeout( scrollPage, 250 );
        }
    }, false );
}

function scrollPage() {
        var sy = scrollY();
        if ( sy >= changeHeaderOn ) {
            var windowtab = $(window).width();
            if (windowtab >= 1021)
            {
            classie.add( header, 'cbp-af-header-shrink' );
            }
        }
        else {
            classie.remove( header, 'cbp-af-header-shrink' );
        }
        didScroll = false;
}

function scrollY() {
    return window.pageYOffset || docElem.scrollTop;
}

init();
})();

var classie = {
// full names
 hasClass: hasClass,
addClass: addClass,
removeClass: removeClass,
toggleClass: toggleClass,
 // short names
has: hasClass,
 add: addClass,
remove: removeClass,
toggle: toggleClass
};

当我为jQuery添加模块时,我在DNN中工作但是当我将它放到皮肤上时,我最终得到了上面的控制台错误

2 个答案:

答案 0 :(得分:3)

脚本中的这一行:

header = document.querySelector('.cbp-af-header')

@ MDN for document.querySelector()

它说,返回文档中的第一个元素。


所以你可能正在寻找.querySelectorAll("selector/s")

document.querySelectorAll(".cbp-af-header");

@ MDN for document.querySelectorAll()

返回文档中提供的所有元素(div in case)的列表

答案 1 :(得分:1)

我遇到了同样的问题。我意识到IIFE是在DOM完全加载之前执行的。如果您使用jQuery,请尝试将其包装在$(document).ready()