JavaScript 制作标签

发布于 2024-11-30 03:43:40 字数 851 浏览 1 评论 0原文

所以,我试图制作一个“选项卡菜单”,如下所示: http://flowplayer.org /tools/tabs/index.html (但我不想用这个。) 因此,我尝试使用 url 变量来设置活动菜单项。 代码:

onload=function(){
    //Check if editPage is set
    if (gup("editPage")) {
        gupname = gup("editPage");
        var x = "contentEditListItem"+gupname; 
        var y = document.getElementsByClassName(x);
        y.className = "contentEditListItemActive";
    } 
}
function gup( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}

gup 函数运行良好,我得到了想要的类名(“contentEditListItem”+gupname)。 为什么它保持不变?

So, I am trying to make a "tabs menu", like this: http://flowplayer.org/tools/tabs/index.html
(but i dont want to use this.)
So, I tried to use url variables to set the active menu item.
Code:

onload=function(){
    //Check if editPage is set
    if (gup("editPage")) {
        gupname = gup("editPage");
        var x = "contentEditListItem"+gupname; 
        var y = document.getElementsByClassName(x);
        y.className = "contentEditListItemActive";
    } 
}
function gup( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}

The gup function works well, I get the wanted classname ("contentEditListItem"+gupname).
Why it is staying unchanged?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情栀口红 2024-12-07 03:43:40

getElementsByClassName 返回一个 NodeList(一种 Array),因此在其上设置属性不会影响该元素的元素它包含,但只包含 NodeList 本身,这没有任何作用。

您可以设置第一个元素的类名称,例如,如下所示:

y[0].className = "contentEditListItemActive";

或者,如果您希望所有元素都更改其类名称,您可以迭代 NodeList

for(var i = 0; i < y.length; i++) {
    y[i].className = "contentEditListItemActive";
}

getElementsByClassName returns a NodeList (kind of Array), so setting a property on that is not affecting the elements that it contains, but only the NodeList itself, which has no effect.

You could set the class name of the first element, for example, like this:

y[0].className = "contentEditListItemActive";

Or, if you want all elements have their class name changed, you could iterate over the NodeList:

for(var i = 0; i < y.length; i++) {
    y[i].className = "contentEditListItemActive";
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文