Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

setting new class in div [duplicate]

Possible Duplicate:
Change an element's CSS class with JavaScript

I'm trying to set div's attributes with this script. And i have problem in third line, where I'm trying to get div-s from parent div which id is "loading". but here the problem, it seems like there in variable divs is nothing. why's that?

Script:

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>

I want to replace divs class: "bar_" to "bar". that's what I'm trying to do.

like image 923
greg Avatar asked Feb 23 '12 16:02

greg


1 Answers

  • class is a future reserved word in JavaScript. Use className, not class.
  • As a general rule, use properties, not setAttribute
  • There's no need to re-get the <div> by ID when you already have them in divs!

So:

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";
    }
}
like image 87
Matt Ball Avatar answered Oct 05 '22 12:10

Matt Ball