无法运行JavaScript函数,WordPress添加current-menu-item类失败求助
我之前碰到过一模一样的坑!在WordPress的<header>标签里写了脚本函数,想要在访问指定URL(MY URL GOES HERE)时给对应菜单加上current-menu-item类,但不管用严格相等的===还是宽松相等的==判断URL,都完全没效果,折腾了好一阵才找到问题所在。
问题根源
我的错误其实很典型:把脚本放在<header>里,导致脚本在DOM完全渲染完成前就执行了。这时候页面里的菜单元素还没被浏览器加载出来,脚本自然找不到目标元素,更没法给它添加类名。
修正方案
有两种靠谱的解决方式:
- 把脚本移到
<body>末尾:也就是放在</body>标签之前,这样能确保所有DOM元素都加载完毕后再运行脚本。 - 用DOM加载事件包裹逻辑:如果不想移动脚本位置,就把你的函数放在
DOMContentLoaded事件监听里,确保DOM准备好后再执行代码,示例如下:
document.addEventListener('DOMContentLoaded', function() { // 替换成你的目标URL和菜单选择器 if (window.location.href === 'MY URL GOES HERE') { const targetMenuItem = document.querySelector('.your-target-menu-item'); if (targetMenuItem) { targetMenuItem.classList.add('current-menu-item'); } } });
这样修改后,脚本就能正确找到菜单元素并添加类名了,===的判断逻辑也能正常生效。
内容的提问来源于stack exchange,提问作者Arne De Belser
相关产品推荐
相关产品推荐

