Uncaught TypeError: $(...) is undefined

Uncaught TypeError: $(...) is undefined

我一直致力于实现一个 JavaScript jQuery 脚本,它具有活动导航 link 和平滑滚动。当您滚动到相应的部分(使用锚点 link)时,应该突出显示导航 link,然后当用户单击导航项时,它应该高亮 link 那 link 并滚动到它的部分。但是,这仅在 index.html 页面而非 cv.html 页面上有效。

我面临的问题是“未捕获的类型错误:$(...).offset() 未定义”,这里是 link 到站点:

http://jona09h34.web.videndjurs.dk/.

当打开 CV.html 并尝试使用 link 中的任何一个(Om mig、Projekter 或 Kontakt)导航回 index.html 时,该错误可能会重现(翻译:关于我、项目、联系人)

编辑:重写问题,添加 link 我有问题的网站。

该代码似乎对我有用,但请尝试更改您的浏览器或脚本标签。我推荐这个:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>

您当前的问题:

首先 - 当您将鼠标悬停在简历页面上的导航 link 上时,检查浏览器左下角的目的地 URL。请注意它们是如何指向附加了 # 的简历页面,但您的所有内容都在您的索引页面上。

您的 activeLink.js 文件正在侦听对这些导航元素的点击,然后使用 hash 值找到匹配 <div> 的顶部并滚动到它。但是那些目标 div 只存在于您的主页上,而不存在于您的简历页面上。

您有几个选项可以修复它。最快的方法是修改您的 javascript 以检查当前 window.location 并且仅在主页上触发您的“平滑滚动”代码。

以不同的方式修复它:

您可以更进一步,删除 all 处理页面滚动的 javascript(activeLink.js 中的第 10-48 行)并让 CSS 做吧。您可以将以下内容添加到您的 css:

html {
  scroll-behaviour:smooth;
  scroll-padding-top: 100px; 
}

scroll-padding-top 允许您指定一个偏移量来说明您的固定 header。您需要修改该值并可能添加媒体查询,以便它也适用于您的小型手机 header。

现在,您需要更改您的导航 link,这样无论您在哪个页面,它们仍然可以工作。不仅仅是 <a href="#about">Om mig</a>,而是添加完整路径:<a href="index.html#about">Om mig</a>。现在,如果您在 index.html 上 不是 时单击 link,您将加载正确的页面。流畅的滚动将启动,您将被带到正确的锚点。