Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Кнопка пользовательского соглашение (https://javascript.ru/forum/misc/80232-knopka-polzovatelskogo-soglashenie.html)

Сергей Ракипов 22.06.2020 12:10

рони,
Логику понял, то есть мгновенного отрабатывание функции еще до загрузки страницы такого нет в js

Просто прежде чем написать думал о том что изначально скрыть и показать если не было принято соглашение, но потом подумал что JS может справится

рони 22.06.2020 12:18

Цитата:

Сообщение от Сергей Ракипов
еще до загрузки страницы такого нет в js

JS может справится, если использовать классы и скриптом ставить класс на body или html, сразу после их создания. но зачем?

рони 22.06.2020 12:26

Цитата:

Сообщение от рони
JS может справится

<!doctype html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
.terms_of_use {
    transform: translateY(0);
    position: fixed;
    height: 70px;
    width: 100%;
    background-color: hsla(40, 100%, 30%, 1);
    transition: .8s;
}
.terms_of_use.yes{
    transform: translateY(-120%);
}


body.hide .terms_of_use{
     display: none;
}


    </style>

  <script>
window.onload = function(){
    const termsOfUse = document.querySelector(".terms_of_use");
    const iAgree = document.querySelector(".i_agree");

    if (!localStorage.getItem("hiden")){
        iAgree.onclick = function() {
        termsOfUse.classList.add("yes");
        localStorage.setItem("hiden", "abrakadabra")
        }
    }
}

</script>

</head>
<body>
<script>
if (localStorage.getItem("hiden")) document.body.classList.add("hide");
</script>
<div class="terms_of_use"><button class="i_agree">принять</button></div>
</body>
</html>

Сергей Ракипов 22.06.2020 12:46

рони,
а что такое abrakadabra я понимаю что это какое то имя но за что оно отвечает,

рони 22.06.2020 13:01

Сергей Ракипов,
тут может быть любое значение(строка) которое в if вернёт true.
метка, что согласие получено.
alert(Boolean("abrakadabra"));

Сергей Ракипов 22.06.2020 15:06

Цитата:

Сообщение от рони (Сообщение 526278)
Сергей Ракипов,
тут может быть любое значение(строка) которое в if вернёт true.
метка, что согласие получено.
alert(Boolean("abrakadabra"));

А если не писать то false

SuperZen 22.06.2020 15:26

кто такой localStorage
https://developer.mozilla.org/ru/doc...w/localStorage

как записать в storage
https://developer.mozilla.org/ru/doc...torage/setItem

как взять из storage
https://developer.mozilla.org/ru/doc...torage/getItem

и того:

// если нет в хранилище записи с ключем hiden
if (!localStorage.getItem("hiden")){
  // слушатель на кнопку
  iAgree.onclick = function() {
    termsOfUse.classList.add("yes");
    // запишем в хранилище запись с ключем hiden
    localStorage.setItem("hiden", "abrakadabra")
  }
}



// если в хранилище нет записи hiden, да даже если она есть и оно НЕ!! пустое (""), потому оно и abrakadabra, чтобы не было пустым
// выставим класс
if (localStorage.getItem("hiden")) document.body.classList.add("hide");

laimas 22.06.2020 15:43

Наверное все-таки sessionStorage.

Сергей Ракипов 22.06.2020 15:58

SuperZen,
Нравится таки объяснения, спасибо


Часовой пояс GMT +3, время: 07:20.