You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

滚动页面时Uncaught TypeError报错次数持续增加,求技术支持

解决平滑滚动时的Uncaught TypeError问题

错误根源

你的报错是因为部分导航链接的href指向的元素不存在,导致refElement是空的jQuery对象,调用position()方法时触发Uncaught TypeError。每次滚动页面都会执行onScroll函数遍历所有导航链接,所以报错次数会随滚动操作不断增加。

修复方案

1. 过滤无效目标元素,避免空对象调用方法

修改onScroll函数,先检查目标元素是否存在,再执行后续逻辑:

function onScroll(event){
    var scrollPos = $(document).scrollTop();
    $('.nav li a').each(function () {
        var currLink = $(this);
        var targetSelector = currLink.attr("href");
        
        // 跳过非锚点链接或不存在的目标元素
        if (!targetSelector || targetSelector === '#' || $(targetSelector).length === 0) {
            currLink.removeClass("active");
            return;
        }
        
        var refElement = $(targetSelector);
        if (refElement.position().top <= scrollPos && refElement.position().top + refElement.height() > scrollPos) {
            $('.nav ul li a').removeClass("active");
            currLink.addClass("active");
        } else {
            currLink.removeClass("active");
        }
    });
}

2. 修复平滑滚动中的变量与哈希赋值问题

原代码存在重复声明target变量、哈希赋值错误的问题,同时增加目标元素存在性检查:

$(document).ready(function () {
    $(document).on("scroll", onScroll);
    
    // smoothscroll
    $('.scroll-to-section a[href^="#"]').on('click', function (e) {
        e.preventDefault();
        $(document).off("scroll");
        
        $('.scroll-to-section a').removeClass('active');
        $(this).addClass('active');
      
        var targetSelector = this.hash;
        var target = $(targetSelector);
        
        // 目标元素不存在时直接返回,避免无效操作
        if (target.length === 0) {
            $(document).on("scroll", onScroll);
            return;
        }
        
        $('html, body').stop().animate({
            scrollTop: target.offset().top + 1
        }, 500, 'swing', function () {
            window.location.hash = targetSelector;
            $(document).on("scroll", onScroll);
        });
    });
});

3. 替换HTML实体字符

注意原代码中的&quot;是HTML实体的双引号,需要全部替换为正常的双引号("),否则代码无法正常执行。

内容的提问来源于stack exchange,提问作者PhilipA1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 16:05:15