Ryan Ali
Ryan Ali

Reputation: 13

JavaScript change class of HTML element

I want to change the class="filter" to class="active filter" depending on the system day. I know how to get the system day but am unable to change the class. Can anyone help me please on this?

<li id="0"><a href="javascript:;" data-filter="all" class="active filter">All</a></li>
<li id="1"><a href="javascript:;" data-filter=".monday" class="filter"> Monday</a></li>
<li id="2"><a href="javascript:;" data-filter=".tuseday" class="fiter">Tuesday </a></li>
<li id="3"><a href="javascript:;" data-filter=".wednesday" class="filter"> Wednesday</a></li>
<li id="4"><a href="javascript:;" data-filter=".thursday" class="filter"> Thursday</a></li>

Upvotes: 0

Views: 139

Answers (3)

Chava Geldzahler
Chava Geldzahler

Reputation: 3730

To change the class with JavaScript:

element.classList.add     // adds a class
element.classList.remove  // removes a class

You would loop over the elements, and add the active class to the one that matches your system day. (You can use getAttribute('data-filter') to compare with your system day.)

var sysDay = 'monday';

var activeDay = function(sysDay) {
  var days = document.getElementsByClassName('day');
  for (var i=0; i<days.length; i++) {
    // remove active class
    days[i].classList.remove('active');
    // add active class only if matches system day
    if ( (days[i].getAttribute("data-filter")) == sysDay )
    {
      days[i].classList.add('active');
    }  
  }
}

activeDay(sysDay);
.active {
  color: red;
}
<li id="0"><a href="javascript:;" data-filter="all" class="active filter day">All</a></li>
<li id="1"><a href="javascript:;" data-filter="monday" class="filter day"> Monday</a></li>
<li id="2"><a href="javascript:;" data-filter="tuseday" class="fiter day">Tuesday </a></li>
<li id="3"><a href="javascript:;" data-filter="wednesday" class="filter day"> Wednesday</a></li>
<li id="4"><a href="javascript:;" data-filter="thursday" class="filter day"> Thursday</a></li>

Upvotes: 1

TaBo
TaBo

Reputation: 11

<ul class="text-center">
<li id="1"><a href="#" data-filter=".monday" class="filter"> Monday</a></li>
<li id="2"><a href="#" data-filter=".tuseday" class="fiter">Tuesday </a></li>
<li id="3"><a href="#" data-filter=".wednesday" class="filter"> Wednesday</a></li>
<li id="4"><a href="#" data-filter=".thursday" class="filter"> Thursday</a></li>
<li id="5"><a href="#" data-filter=".friday" class="filter">Friday</a></li>
<li id="6"><a href="#" data-filter=".saturday" class="filter"> Saturday</a></li>
<li id="0"><a href="#" data-filter=".sunday" class="filter"> Sunday</a></li>
</ul>

 <script>
    ActiveDay();
    function ActiveDay()
    {
        var day = new Date().getDay();

        for (var i = 0; i < 7; i++)
        {
            $("#" + i + ">a").attr("class", "filter");
        }

        $("#" + day + ">a").attr("class","active filter");
    }

  </script>   

Upvotes: 0

jafaircl
jafaircl

Reputation: 957

var listItem = document.getElementById('0')
listItem.classList.toggle('active');

You should probably change your ids though

Upvotes: 0

Related Questions