0

我正在使用一个 Wordpress 网站,在那里我正在构建一个导航栏。我想添加的功能之一是,如果您在某个页面上,导航栏中的选项将加粗以表示您正在访问的网站部分。

我正在尝试使用 JavaScript 来实现这一点,因为我没有 PHP 的工作知识:

var current_page = document.URL;
var current_option_id="";
if(current_page==="some-url"){
  current_option_id="menu-item-34";
}
document.getElementById(current_option_id).getElementsByTagName("A")[0].style.fontWeight="bold";

基本上,我的代码会确定我们在哪个页面上,并将正确的菜单选项的 id 分配给current_option变量。然后,脚本将尝试选择正确的菜单选项,选择该菜单选项内的链接,并更改其样式。

这个脚本的问题是它根本无法工作,在无法选择 HTML 元素的地方产生错误;document.getElementById(current_option);返回空值。但是,当我在控制台中执行此操作时,它工作正常,并且样式已正确更改。为什么是这样?我知道该current_option变量具有正确的值,但脚本在尝试选择要更改的元素时失败。

非常感谢任何建议和帮助。如果您知道如何在 PHP 中使用可以与 Wordpress 很好集成的东西来做到这一点,请分享(并解释您的代码是如何工作的!)。如果我违反了任何 StackOverflow 规则,我深表歉意。

4

1 回答 1

1

没有看到您的代码很难说,但是您的脚本是否有可能在整个页面加载之前执行(或者,更具体地说,在将具有 id 的元素#menu-item-34添加到 DOM 之前)?

尝试将脚本包装在一个函数中,然后将该函数设置为页面的 onload 处理程序:

window.onload = function() {
    /* code goes here */
};
于 2013-06-12T02:52:21.067 回答