【问题标题】:setting new class in div [duplicate]在 div 中设置新类 [重复]
【发布时间】:2012-03-14 02:19:06
【问题描述】:

可能重复:
Change an element's CSS class with JavaScript

我正在尝试使用此脚本设置 div 的属性。我在第三行有问题,我试图从父 div 获取 div-s,其中 id 是“正在加载”。但这里的问题,似乎在变量 div 中什么都没有。这是为什么呢?

脚本:

function  blink() {
    document.getElementById("loading").setAttribute("class","loader");
    var divs = document.getElementById("loading").getElementsByTagName("div");
    alert(divs[0].class);
    for(var i=0;i<divs.length;i++) {
        var _id = divs[i].id;
        document.getElementById(divs[i].id).setAttribute("class", "bar");
    }       
}

html:

<div id="loading" class="loader2">
<a href="#" onClick="blink()">
    <div class="bar_"></div>
    <div class="bar_"></div>
    <div class="bar_"></div></a>
</div>

我想将 div 类:“bar_”替换为“bar”。这就是我想要做的。

【问题讨论】:

  • 你不应该使用块元素 &lt;div&gt; 内联元素 &lt;a&gt;

标签: javascript html replace


【解决方案1】:
  • class is a future reserved word 在 JavaScript 中。使用className,而不是class
  • 作为一般规则,使用属性,而不是setAttribute
  • 如果您已经在divs 中拥有&lt;div&gt;,则无需通过ID 重新获取它们!

所以:

function blink() {
    var loader = document.getElementById("loading");
    loader.className = "loader";
    var divs = loader.getElementsByTagName("div");

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

【讨论】:

    【解决方案2】:

    div 放在a 标记内不是有效的html,这没有帮助。但主要问题是要读取类属性需要使用el.className。此外,当您尚未在 html 中定义它时,您正在尝试读取内部 div 的 id 属性。

    【讨论】:

      猜你喜欢
      • 2013-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-01
      • 2017-04-09
      • 1970-01-01
      • 2017-12-17
      • 2021-01-08
      相关资源
      最近更新 更多