Javascript Глобальный массив пуст на всех страницах - PullRequest
1 голос
/ 21 июня 2019

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

В заголовке сайта я создаю массив all_timers, если он пуст. Затем в моей функции таймера я помещаю идентификатор таймера в этот массив. Но когда я перезагружаю страницу, массив всегда пуст.

Когда страница таймеров запускается, консоль показывает «нажата». Но всякий раз, когда страница обновляется, она показывает «создать новый».

Я смущен использованием окна. В некоторых сообщениях говорится, что он используется, в некоторых это не упоминается, а в некоторых показано, что он используется для всех экземпляров переменной, а не только для ее создания. Sp я создаю глобально неправильно? Я просто показываю основное использование здесь, хотя я попробовал много вариантов. Кто-нибудь, пожалуйста, укажите, что мне не хватает? Обратите внимание, что это сокращенный код. Функция таймера действительно вызывается.

    <head>

    <script> 
    if (typeof all_timers !== 'undefined' && all_timers.length > 0) {
      console.log('found '+all_timers.length);
      for (var i = 0; i < all_timers.length; i++) {
        console.log('main timer '+all_timers[i]);
      }    
    } else {
      console.log('create new');
      window.all_timers = new Array();
    }
    </script>

    </head>
    <body>


    <script>
    function createfunc(idx) {
        if ($("#time-left-"+idx).length === 0) {
          clearInterval(timerID[idx]);
        } else { 
          timerID[idx] = setInterval(function() {
            if (show_timer > 0) {
              all_timers.push('some thing'+idx);
              console.log('pushed');
            } else {
              clearInterval(timerID[idx]);
            }   
          }, 1000);
        }    
    }
    </script>
    </body>

1 Ответ

2 голосов
/ 21 июня 2019

Вам нужно будет либо сохранить глобальную метку времени с локальным хранилищем , либо передать метку времени в качестве параметра URL .

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

...