javascript - 如何更改存储在数组中的变量的类名?

标签 javascript html css

function hideTitle(){
  var k = document.getElementsByClassName('menu-title');
  for (var i = 0;i < k.length ; i++) {
    k[i].className = "menu-title-after-click" ;
    /*document.getElementById("menu-title").className="menu-title-after-click";*/
  }
}
ul {
  list-style:none;
}
.menu-title{
  /*padding-left: 2px;*/
  padding-left: 3px;
  opacity: 1;
  color: red;
  visibility: visible;
  /*display: none;*/
}

.menu-title-after-click{
  /*display: none;*/
  visibility: hidden;
  opacity: 0;
  color: green;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css">
<ul>
  <li>
    <span class="fa fa-glass"></span>
    <span id="menu-title" class="menu-title">title1</span>
  </li>
  <li>
    <span class="fa fa-glass"></span>
    <span id="menu-title" class="menu-title">title2</span>
  </li>
  <li>
    <span class="fa fa-glass"></span>
    <span id="menu-title" class="menu-title">title3</span>
  </li>
</ul>
<button type="button" onclick="hideTitle();">hide/show title</button>

在上面我试图在单击与其关联的按钮时隐藏菜单标题。我试图通过更改类名来做到这一点。但它在功能上不起作用,它只是隐藏菜单标题奇怪的位置和连续点击它隐藏所有。我不知道为什么,我想解决这个问题,我该如何解决?

my primary requirement is to change the class names of elements stored in an array.then only to hide the menu-title.

最佳答案

我一直在使用 classList,它更容易理解并且有效。检查这个

您还可以轻松地使用删除和添加来处理类。

已编辑:现在它不会给出 console.log 错误并切换所有类

function hideTitle(){
    var k = document.getElementsByClassName('menu-title');
    for (var i = 0;i < k.length ; i++) {
        if (k[i].classList.contains("menu-title-after-click")) {
            k[i].classList.remove("menu-title-after-click");
        } else {
            k[i].classList.add("menu-title-after-click");
        }
    }
}
ul {
  list-style:none;
  }
.menu-title{
    /*padding-left: 2px;*/
    padding-left: 3px;
    opacity: 1;
    color: red;
    visibility: visible;
    /*display: none;*/
}

.menu-title-after-click{
    visibility: hidden;
    opacity: 0;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css">
<ul>
  <li>
    <span class="fa fa-glass"></span>
    <span id="menu-title" class="menu-title">title1</span>
  </li>
   <li>
    <span class="fa fa-glass"></span>
    <span id="menu-title" class="menu-title">title2</span>
  </li>
   <li>
    <span class="fa fa-glass"></span>
    <span id="menu-title" class="menu-title">title3</span>
  </li>
<ul>
  <button type="button" onclick="hideTitle()">hide/show title</button>

关于javascript - 如何更改存储在数组中的变量的类名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39952864/

相关文章:

javascript - 如何从 jquery .val() 中查找某些字符串

javascript - History.js 和 url 编码

javascript - 如何找到相对于父对象而不是窗口顶部的 offsetTop?

javascript - 如何使某个 DIV 成为第一个 child 以及它附加到末尾之前的任何内容

css - 是否有用于卡住表中的行和列标题的纯 CSS 解决方案?

javascript - 阻止 'JavaScript function triggering css width' 影响滚动屏幕位置(在移动设备上)

javascript - stripe checkout 不验证必填字段

html - Bootstrap 容器中的内容

html - CSS 中的版权符号 :after Pseudo-Element

html - 如何使移动网页自动调整大小以适应屏幕?