Эффект CSS исчез из-за перезагрузки страницы

#javascript #html #css #reload

Вопрос:

Существует доска объявлений с вопросами и ответами, где хранятся вопросы пользователей. Эта доска может отображать вопросы в порядке очередности, но у меня есть проблема в этом процессе.

Я хочу применять и сохранять CSS при нажатии на определенный <li> тег.

Код приведен ниже. sortDatas() Функция сначала показывает вопросы и ответы с наибольшим количеством комментариев. Например, если вы нажмете commentlike, будет передан параметр sortDatas() commentlike , и данные с наибольшим значением commentlike будут извлечены с сервера, чтобы их можно было отобразить в верхней части окна.

Я хочу, чтобы даже после завершения выполнения sortDatas() функции эффект css, применяемый changeBGColor() функцией, сохранялся даже после обновления.

В текущей ситуации предупреждение появляется в момент нажатия на него, а затем исчезает, как только применяется css. (так как окно немедленно обновляется)

Причина кажется ясной. Похоже, что changeBGColor() функция не должна применяться непосредственно к onclick() функции. Я понимаю почему, но я не знаю, как это улучшить. Что мне делать? Должен ли я использовать ту же концепцию, onload() что и функция?

c.f) Запросы к серверу для извлечения данных обрабатываются асинхронно. (используя async / await )

 <div class="filter-section">
                <ul>
                    <li class="active" id = "recent" onclick="sortDatas('recent'); changeBGColor('recent')" >recent</li><br>
                    <li class="active" id = "old" onclick="sortDatas('old'); changeBGColor('old')" >old</li><br>
                    <li class="active" id = "commentlike" onclick="sortDatas('commentlike'); changeBGColor('commentlike')">commentlike</li><br>
                    <li class="active" id = "answers" onclick="sortDatas('answers'); changeBGColor('answers')">answers</li><br>
                </ul>
</div>
 
 <script>

    function sortDatas(obj){

        let url = new URL(window.location.href);
        url.searchParams.set('sort',obj);
        location.href=url;

    }

   function changeBGColor(category)
   {

       let c = document.getElementById(category);
        
       if(c.classList.contains("active"))
       {
           alert('1');
           c.classList.remove("active");
           c.classList.add("active-select");
       }
       else if(c.classList.contains("active-select"))
       {
           alert('2');
           c.classList.remove("active-select");
           c.classList.add("active");
       }
        
   }

</script>
 

Комментарии:

1. Почему бы снова не добавить классы в разметку с помощью той же функции JS? Если вы измените разметку с помощью JS, перезагрузка страницы приведет к сбросу этих изменений

2. @NicoHaase Вы имеете в виду добавить существующий код внутри функции changeBGColor внутри функции sortDatas? Я не совсем понял.