Кнопка входа и div (аккаунт) скрыть и показать - PullRequest
0 голосов
/ 02 августа 2020

Привет, у меня проблема с кнопкой входа в систему. Хочу сделать, если пользователь логинится; аккаунт будет отображаться, кнопка входа в систему будет скрыта. Остальные кнопки входа в систему отображаются, учетная запись скрывается.

Я использую jquery, чтобы закодировать его, но не уверен, что это правильно или нет. К тому же я чувствую, что он вообще не работает. Если можете, дайте мне несколько советов, какое место нужно исправить. Спасибо.

Это коды ниже:

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <script src='https://kit.fontawesome.com/a076d05399.js'></script>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

    <title>Document</title>

    <style>

       .login{

           float:right;

           margin-right:50px;

           margin-top:10px;

           text-decoration:none;

           background-color:darkcyan;

           color:white;

           padding:10px 25px;

           border-radius:6px;
       } 

       .login:hover{

           background-color:white;

           border: 2px solid darkcyan;

           color:darkcyan;

          overflow:hidden;

       }

       .account{

           margin-left:70%;

           margin-top:15px;

           display:inline-block;

           position:relative;

       }

       /* Popup container */

       .notification{

           position:absolute;

           display: inline-block;

          cursor: pointer;

       }

      /* The actual popup (appears on top) */

      .notification .popuptext {

       visibility: hidden;

        width: 15px;

       background-color: #555;

       color: #fff;

       text-align: center;

       border-radius: 60px;

       padding: 2px 4px;

       position: absolute;

       z-index: 1;

       bottom: 96%;

       left: 20%;

       margin-left: 10px;

       }


    /* Toggle this class when clicking on the popup container (hide and show the popup) */

    .notification .show {

     visibility: visible;

     -webkit-animation: fadeIn 1s;

     animation: fadeIn 1s

     }


    @-webkit-keyframes fadeIn {

    from {opacity: 0;}

    to {opacity: 1;}

    }

   @keyframes fadeIn {

    from {opacity: 0;}

    to {opacity:1 ;}

    }
       .cart{

           margin-left:50px;

           position:absolute;

           }

           
       .user{

        margin-left:108px;

        position:absolute;

       }

       /* The container <div> - needed to position the dropdown content */

       .user {

        position: relative;

       display: inline-block;

       }

       /* Dropdown Content (Hidden by Default) */

       .user-dropdown {

       display: none;

       position: absolute;

      background-color: #fff;

      min-width: 100px;

       box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);

       z-index: 1;

       }

      /* Links inside the dropdown */

       .user-dropdown a {

        color: black;

       padding: 12px 10px;

       text-decoration: none;

       display: block;

       text-align: center;

        }

      /* Change color of dropdown links on hover */

      .user-dropdown a:hover {background-color: #ddd;}


      /* Show the dropdown menu on hover */

      .user:hover .user-dropdown {display: block;}


    </style>

</head>

<body>

    <a href="" class="login" >Login</a>

    <div class="account">

        <div class="notification"  onclick="myFunction()">

            <i class='fas fa-bell' style='font-size:36px'></i>

                <span class="popuptext" id="myPopup">1</span>
        </div>

        <div class="cart">

            <i class='fas fa-shopping-cart' style='font-size:36px'></i>

        </div>

        <div class="user">

            <i class='fas fa-user-circle' style='font-size:36px'></i>

            <i class='fas fa-angle-down' style='font-size:24px'></i>

            <div class="user-dropdown">

                <a href="#">Link 1</a>

                <a href="#">Link 2</a>

                <a href="#">Link 3</a>

              </div>

        </div>

    </div>



    <script>

        // When the user clicks on <div>, open the popup

        function myFunction() {

          var popup = document.getElementById("myPopup");

          popup.classList.toggle("show");

        }

        </script>

    <script>

  // if user login, account show; login button hide.

  // else login button show; account hide.

  $(document).ready(function(){

  $(".login").click(function(){

    $(".account").toggle();

  });

});

</script>

</body>

</html> 

1 Ответ

1 голос
/ 02 августа 2020

Вам нужно изменить <a href="" class="login" >Login</a> на что-то вроде <button class="login" >Login</button>, и он должен работать

EDIT

Вам нужно будет использовать что-то вроде sessionStorage или localStorage или cookie, чтобы сохранить сеанс пользователя (чтобы увидеть, вошел ли пользователь в систему). Я использовал sessionStorage. В вашем случае лучше всего использовать sessionStorage.

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

Здесь вы можете найти, как искать sessionStorage в браузере: http://css-workshop.com/check-cookies-local-and-session-storage-in-ie11-chrome-opera-and-firefox/#: ~: text = Check% 20local% 20and% 20session% 20storage% 20in% 20Chrome% 20and% 20Opera, Session% 20Storage% E2% 80% 9D% 20and% 20explore% 20it .

Вот полный код javascript для входа. Остальной код должен быть таким же. Просто замените код в $(document).ready(function(){}) разделе

  // if user login, account show; login button hide.
  // else login button show; account hide.
   $(document).ready(function(){


    //By default account div will be hidden
    // And login will be shown
    $(".account").hide();

    // if login clicked
    // and login successful
    // store a session
    $(".login").click(function(){

        // Store a session key
        // in this case, i have saved a random number
        // you can store something unique
        sessionStorage.setItem("session_key", Math.random());

        // Then hide the login button
        // And show account
        $(".login").hide();
        $(".account").show();

    });

    // Now check if session already exists
    // If session exists, show account div
    // and hide login div
    if (sessionStorage.getItem('session_key') !== null){
        $(".login").hide();
        $(".account").show();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...