Есть ли возможность выполнить функцию только один раз?

#javascript

#javascript

Вопрос:

У меня есть этот код на JavaScript, который скрывает некоторый контент. Я действительно хочу скрыть содержимое перед нажатием кнопки. Я знаю, что, возможно, у меня могли бы быть пустые элементы и заполнить их после нажатия этой кнопки, но это выглядит как более простой способ.

Я хочу выполнить эту функцию с момента входа пользователя на страницу к моменту нажатия на какую-либо кнопку — тогда никогда, даже после обновления.

Возможно ли это как-то?

 function hideTheTable(){
  document.getElementsByTagName('table')[0].style.visibility = "hidden"
  document.getElementsByTagName('table')[1].style.visibility = "hidden"
  document.getElementsByTagName('button')[1].style.visibility = "hidden"
  document.getElementById('info').style.visibility = "hidden"
}

hideTheTable();
 

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

1. Вы можете использовать локальное хранилище для отслеживания того, нажал ли пользователь кнопку, или вы можете сохранить эту информацию на своем сервере, в зависимости от вашей архитектуры

Ответ №1:

Вы можете использовать localStorage для сохранения того, была ли функция уже запущена.

 function hideTheTable(){
    if(!localStorage.getItem('hideTableFlag')){
        localStorage.setItem('hideTableFlag', true);
        console.log('function run')
    }
}
 

Ответ №2:

да, вы можете, добавив файл cookie, который возвращается, если пользователь вошел на страницу раньше:

 // first lets create a helper function that lets us retreive a cookie
function getCookie(cname) {
  var name = cname   "=";
  var decodedCookie = decodeURIComponent(document.cookie);
  var ca = decodedCookie.split(';');
  for(var i = 0; i <ca.length; i  ) {
    var c = ca[i];
    while (c.charAt(0) == ' ') {
      c = c.substring(1);
    }
    if (c.indexOf(name) == 0) {
      return c.substring(name.length, c.length);
    }
  }
  return "";
}
// setting cookie
// if you need the function to load when the page loads
window.onload = (){
document.cookie = "enteredbefore=true; path=/";
};
// else if you need to call it when user clicks on button (define your button)
mybutton.onclick = (){
document.cookie = "enteredbefore=true; path=/";
};
// now we make if else statment
if(getCookie(enteredbefore) == ""){
// call your function
hideTheTable();
}
 

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

1. Спасибо за ответ, я просто искал более простое решение и на самом деле хотел что-то, что будет работать для одного экземпляра, это не обязательно должно работать, когда пользователь приходит во второй раз. Но спасибо!