未捕获的类型错误:无法读取 null 的属性“offsetTop”

2023-11-26

我正在使用 HTML、CSS 和 JavaScript 创建一个带有粘性和响应式导航栏的网页。我创建了响应式导航栏,并试图使其具有粘性。问题是它不粘并且显示错误: 未捕获的类型错误:无法读取 null 的属性“offsetTop”

HTML 代码:

<div class="topnav" id="myTopnav">
<a href="#home" class="active">Home</a>
<a href="#career">Careers</a>
<a href="#fellowship">About Us</a>
<a href="javascript:void(0);" class="icon" onclick="myFunctionForResponsive()">
    <i class="fas fa-bars"></i>
</a>
</div>

JavaScript 代码:

// When the user scrolls the page, execute myFunction 
window.onscroll = function() {myFunctionForSticky()};

// Get the navbar
var navbar = document.getElementById("myTopnav");

// Get the offset position of the navbar
var sticky = navbar.offsetTop;

// Add the sticky class to the navbar when you reach its scroll position. 
Remove "sticky" when you leave the scroll position
function myFunctionForSticky() {
    if(window.pageYOffset >= sticky){
    console.log("window.pageYOffset >= sticky");
}
else{
    console.log("Not window.pageYOffset >= sticky");
}
 if (window.pageYOffset >= sticky) {
    navbar.classList.add("sticky");
  } else {
    navbar.classList.remove("sticky");  
  }
}

/*Toggle between adding and removing the "responsive" class to topnav
when the user clicks on the icon*/

function myFunctionForResponsive() {
    var x = document.getElementById("myTopnav");
    if (x.className === "topnav") {
        x.className += " responsive";
    } else {
        x.className = "topnav";
    }
}

如果我正在上课而不是 id 那么它会显示错误: 未捕获的类型错误:无法读取未定义的属性“删除”


想要访问 DOM 的代码需要包装在一个监听的事件监听器中DOMContentLoaded.

当前您正在尝试访问具有 id 的元素myTopnav当浏览器还没有解析 HTML 时,这意味着你的document.getElementById("myTopnav");回报null。在下一行代码中,您尝试读取offsetTop的财产null那你的document.getElementById("myTopnav")返回,导致Cannot read property 'offsetTop' of null.

https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded

document.addEventListener('DOMContentLoaded', function() {
  // When the event DOMContentLoaded occurs, it is safe to access the DOM

  // When the user scrolls the page, execute myFunction 
  window.addEventListener('scroll', myFunctionForSticky);

  // Get the navbar
  var navbar = document.getElementById("myTopnav");

  // Get the offset position of the navbar
  var sticky = navbar.offsetTop;

  // Add the sticky class to the navbar when you reach its scroll position. 
  // Remove "sticky" when you leave the scroll position

  function myFunctionForSticky() {
    if (window.pageYOffset >= sticky) {
      console.log("window.pageYOffset >= sticky");
    } else {
      console.log("Not window.pageYOffset >= sticky");
    }
    if (window.pageYOffset >= sticky) {
      navbar.classList.add("sticky");
    } else {
      navbar.classList.remove("sticky");
    }
  }

  /*Toggle between adding and removing the "responsive" class to topnav
  when the user clicks on the icon*/

  function myFunctionForResponsive() {
    navbar.classList.toggle('responsive');
  }
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

未捕获的类型错误:无法读取 null 的属性“offsetTop” 的相关文章

  • jquery window.open 在 ajax 成功中被阻止

    尝试在我的 ajax 成功调用中打开一个新的浏览器窗口 但是 它被阻止为弹出窗口 我做了一些搜索 发现用户事件需要绑定到 window open 才能避免这种情况发生 我还找到了这个解决方案 您可以在 ajax 之前打开一个空白窗口 然后在
  • Node.js - console.log 不显示数组中的项目,而是显示 [Object]

    我在注销对象内数组的内容时遇到问题 实际的物体看起来像这样 var stuff accepted item1 item2 rejected response Foo envelope from The sender to new item1
  • 仅一页 JavaScript 应用程序

    您是否尝试过单页 Web 应用程序 即浏览器仅从服务器 获取 一页 其余部分由客户端 JavaScript 代码处理 此类 应用程序页面 的一个很好的例子是 Gmail 对于更简单的应用程序 例如博客和 CMS 使用这种方法有哪些优点和缺点
  • 如何更改 Bootstrap 3 div 列顺序

    正在做我的第一个响应式设计 在 Bootstrap 3 中可能会出现类似的情况 在 lg 上更改此设置 a b c sm 上的这个 a c b 您可以使用两个 div 一个用于第一类型的布置 另一个用于第二类型的布置 第一个仅在 lg 中显
  • 如何使用 JavaScript 获取没有 HTML 元素的纯文本?

    我的 HTML 中有 1 按钮和一些文本 如下所示 function get content I don t know how to do in here
  • HTML2canvas 和 Canvas2image,下载的屏幕截图不显示我的 HTML 图像

    我一直在开发一个 HTML 页面 我想将其转换为图像 我一直在使用 html2canvas 和 canvas2image 脚本并采用此代码http jsfiddle net 8ypxW 3 http jsfiddle net 8ypxW 3
  • Jquery 中的动态滚动位置

    请帮助我解决以下情况 我有 3 个页面 当滚动到达第二页时 用户滚动页面 它必须找到特定的 ID 然后触发一个函数 一旦第三页开始 另一个函数就会触发 根据要求我不应该使用任何插件
  • 如何将送货地址复制到帐单地址

    我想知道是否可以将送货地址复制到帐单地址 当用户单击与送货地址相同的复选框时 送货地址值将被复制到账单输入字段 我完成了大部分部分 但我不确定如何将选择菜单 状态 值复制到帐单地址 我真的很感谢任何帮助 My code document r
  • 淡出和循环一组 div 的最佳方式

    假设我有以下 div div class a You are funny div div class b You are smart div div class c You are cool div 最好的展示方式是什么div a持续 5
  • 覆盖并重置 CSS 样式:auto 或 none 不起作用

    我想覆盖为所有表定义的以下 CSS 样式 table font size 12px width 100 min width 400px display inline table 我有一个特定的表 其类名为 other 最后的餐桌装饰应该是这
  • 将 javascript 整数转换为字节数组并返回

    function intFromBytes x var val 0 for var i 0 i lt x length i val x i if i lt x length 1 val val lt lt 8 return val func
  • Chartjs刻度标签位置

    尝试让 Y 轴刻度标签看起来像image https i stack imgur com XgoxX png 位于秤顶部且不旋转 缩放选项当前如下所示 scales yAxes id temp scaleLabel display true
  • 为什么“tbody”不设置表格的背景颜色?

    我在用 tbody 作为 CSS 选择器来设置background color在一个表中 我这样做是因为我有多个 tbody 表内的部分 它们具有不同的背景颜色 我的问题是 当使用border radius在细胞上 细胞不尊重backgro
  • JavaScript 代码在不使用 ActiveX 的情况下截取网站屏幕截图

    我有一个用户与之交互的 JavaScript 应用程序 我需要保存当前界面的外观 裁剪出我需要的部分 或者通过指定div只拍摄我需要的部分 然后发送回服务器 显然任何外部服务都无法做到这一点 我需要一个 JavaScript 或Flash
  • 如果数字小于 10,则显示前导零 [重复]

    这个问题在这里已经有答案了 可能的重复 JavaScript 相当于 printf string format https stackoverflow com questions 610406 javascript equivalent t
  • 数据表日期范围过滤器

    如何添加日期范围过滤器 like From To 我开始进行常规搜索和分页等工作 但我不知道如何制作日期范围过滤器 我正在使用数据表 1 10 11 版本 My code var oTable function callFilesTable
  • 为范围旋钮 ionic-range 添加边框颜色

    我正在使用离子范围添加范围滑块 并想向范围旋钮添加边框 由于它的 ionic4 和范围旋钮是 Shadow dom 的一部分 我无法使用范围旋钮的 border 属性直接更改边框 我已附上我想要实现的图像 范围旋钮周围有白色边框 现有属性只
  • 单击引导分页链接时调用 jquery 函数

    我想在单击引导分页链接时调用 jquery 函数 假设我想从第1页遍历到第2页 应该调用一个jquery函数 我正在使用以下代码 但它不起作用 ul pagination on click li function alert page ch
  • 如何在打字稿文件中导入没有定义文件的js库

    随着我们的项目变得越来越大 我想从 JavaScript 切换到 TypeScript 以帮助进行代码管理 然而 我们使用许多库作为 amd 模块 我们不想将其转换为 TypeScript 我们仍然想将它们导入 TypeScript 文件
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没

随机推荐

  • 通过LTR和RTL内容的组合改变负数的方向

    这是我的 HTML 结构 div direction rtl span direction ltr div span 2 span div 这是预期结果 如你所见 符号应出现在数字的开头 我怎样才能做到这一点 Note 的方向div应该rt
  • 如何确定主语、宾语等词语?

    我正在尝试实现可以 通过将句子分成更小的部分来确定句子含义的应用程序 所以我需要知道哪些词是主语 宾语等 以便我的程序知道如何处理这个句子 这是一个开放的研究问题 您可以在维基百科上获得概述 http en wikipedia org wi
  • 如何使用 Node.js 将 Base64 编码的图像(字符串)直接上传到 Google Cloud Storage 存储桶?

    目前 我正在使用 google cloud 存储NPM 包可将文件直接上传到 Google Cloud Storage 存储桶 这需要一些技巧 因为我只有图像的 base64 编码字符串 我必须 解码字符串 将其另存为文件 将文件路径发送到
  • 我也可以通过单击其他元素来展开/折叠 JQuery ui Accordion 的内容吗?

    默认情况下 有内容标题来控制展开 折叠 但在我的情况下 我也可以通过其他元素展开 折叠内容 例如 jquery ui 手风琴代码的基本结构 div class demo div h3 a href Section 1 a h3 div p
  • 在python中按时间(TimestampType)连接两个spark数据帧

    我有两个数据帧 我想基于一列连接它们 但需要注意的是 该列是一个时间戳 并且该时间戳必须在一定的偏移量 5 秒 内才能连接记录 更具体地说 记录在dates df with date 1 3 2015 00 00 00应该加入events
  • 安装 pywin32 lib 后仍然收到错误“ImportError:没有名为 win32com.client 的模块”

    我已经从这里安装了 Python for Windows 扩展 库 http sourceforge net projects pywin32 files pywin32 但是当我在程序中导入 win32com client 时 我仍然收到
  • 与 Windows 7 兼容的最新 NodeJS [重复]

    这个问题在这里已经有答案了 我正在尝试为 Windows 7 安装 NodeJS 我尝试安装最新的 NodeJS 但它与 Windows 7 不兼容 我想知道是否有人知道可以在 Windows 7 上安装的最新版本的 NodeJS 是什么
  • 底层字符集是否仅取决于 C 实现?

    许多文本警告说 处理char整数值不可移植 例如假设 A 的值为 65 如 ASCII 所示 但是什么决定了该字符集是 ASCII 或扩展形式 还是其他字符集呢 是由操作系统决定的 还是由编译器决定的 我认为这不依赖于硬件 例如 Intel
  • C++ 向函数发送任何类型的参数

    事情是这样的 我想创建一个 void 函数 它将接收两种众所周知的值类型和另一种可以是任何类型的值 代码如下 void change settings string element short setting value switch se
  • 空感知函数调用? [复制]

    这个问题在这里已经有答案了 Dart 有一些空感知运算符 即可以执行以下操作 var obj obj foo foo is only called if obj null 这对于存储或传递给变量的函数也可能吗 通常的模式是 typedef
  • 禁用列表视图的交叉幻灯片选择

    我正在设计一个应用程序 它的中心有一个垂直平移的一维列表 用户可以通过翻转视图在列表之间水平翻转 当用户在列表视图中水平拖动时 它会选择该行 因为横向滑动 这不是我想要的行为 我最好希望 Flipview 开始左右平移 我认为这与rails
  • 允许在 Android Webview + jquery mobile 中进行远程 ajax 调用

    我正在使用 jquerymobile 开发一个 javascript HTML 应用程序 它向远程服务器发出 ajax 请求 该应用程序在 Chrome 上运行良好 仅在禁用网络安全的情况下启动 chrome 但是当我将其嵌入 Androi
  • Doctrine2 急切加载运行多个查询而不是 1 个

    我将 Symfony2 与 Doctrine2 最新版本 一起使用 并定义了此关系 ORM OneToMany targetEntity Field mappedBy event fetch EAGER ORM OrderBy name A
  • MySQL - 一组时间差的总和

    我想对所有时间差求和以显示志愿者的总工作时间 获取时间差的结果集很容易 Select timediff timeOut timeIn FROM volHours WHERE username skolcz 它给出了按小时列出的时间列表 但我
  • Python程序删除文本文件中的特定行[重复]

    这个问题在这里已经有答案了 我有一个文本文件 Thai Rectangle2 National Parks txt 其中包含以下几行 1 2 3 4 5 dy 0 5965 7 现在 我想删除该文本文件中的第 6 行 为此 我使用以下 py
  • @OrderColumn、@OneToMany 和集合的空索引列

    我正在尝试创建保留顺序的父子表 Hibernate 文档中的示例 7 8 显示了如何执行此操作 Entity public class Customer Id GeneratedValue public Integer getId retu
  • 为什么 Apache 的 RewriteRule 会泄露本地路径?

    我正在尝试使用 RewriteRules htaccess具有相对路径 但 Apache 似乎想要输出physical路径而不是server每当我尝试输出相对路径时 绝对路径和服务器根路径工作正常 例如 RewriteEngine On t
  • PHP:strlen返回字符长度而不是字节长度[重复]

    这个问题在这里已经有答案了 我有一个 WordPress 网站 我创建了简单的页面模板 例如 然后我使用这个模板创建了一个页面 该页面显示俄语字符串 意思是 你好 的长度 我期望看到 12 因为由 6 个字符组成的 UTF 8 编码的俄语字
  • 使用物理定律模拟轨道[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 在过去的几周里 我一直在尝试模拟太阳系模拟中的轨道 这是我作为大学模块的一部分进行的 简而言之 我的模拟是使用 Ogre3D 渲染引擎用 C 编写的 我尝试使用牛顿万有引力定律来
  • 未捕获的类型错误:无法读取 null 的属性“offsetTop”

    我正在使用 HTML CSS 和 JavaScript 创建一个带有粘性和响应式导航栏的网页 我创建了响应式导航栏 并试图使其具有粘性 问题是它不粘并且显示错误 未捕获的类型错误 无法读取 null 的属性 offsetTop HTML 代