0

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>
2
  • <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> Commented Sep 6, 2017 at 1:45
  • Bad id's Element.className is JavaScript access. Commented Sep 6, 2017 at 1:47

3 Answers 3

1

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>

Sign up to request clarification or add additional context in comments.

2 Comments

I dont know what I am doing wrong. Non of the solution is working for me. What I want to do is to select the day according to the system day on this page. www.nightclubslondon.com/london_nightclubs.html.. Please help me.
What is the format of the data that is being returned from the system? You need to make sure that the value of the data-filter attribute matches it exactly. I see that your values for data-filter start with a period. You should definitely remove that, as they are not valid JavaScript variables.
0
var listItem = document.getElementById('0')
listItem.classList.toggle('active');

You should probably change your ids though

1 Comment

I don't know what I am doing wrong. None of the solutions are working for me. What I want to do is to select the day according to the system day on this page. www.nightclubslondon.com/london_nightclubs.html
0
<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>   

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.