Перенос данных в массив javascript, но массив не растет - PullRequest
0 голосов
/ 08 марта 2012

Я пытаюсь создать систему навигации для внутреннего сайта.

Для этого я создаю массив с помощью javascript, который отслеживает URL страницы, и с каждой новой страницей я помещаю этот новый URL в массив.

Проблема в том, что каждая новая страница перезаписывает последнюю страницу.

Это то, что находится в моем файле javascript ... обратите внимание, я создаю новый массив, только если массив еще не существует (он будет удален, когда человек покинет веб-сайт).

var myURL = document.URL;

if (typeof myHistory == "undefined" || !(myHistory instanceof Array)) {
    var myHistory = [];
}

myHistory.push(myURL); 

var last_element = myHistory[myHistory.length - 1];

var number_rows = myHistory.length;

Это то, что я использую, чтобы увидеть значения в HTML ...

<script type="text/javascript">
<!--
  document.write(last_element);
  document.write(number_rows);
// -->
</script>

Он отображает URL (last_element) по желанию, но number_rows остается на 1, когда я перехожу между страницами, а не на 2, 3, 4 и т. Д., Чего я и хочу достичь.

Может кто-нибудь дать мне какие-нибудь указатели?

Ответы [ 2 ]

1 голос
/ 08 марта 2012

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

Все эти параметры требуют сериализации и десериализации из строк.

Вот краткий пример того, как вы могли бы сделать это, используя localStorage:

//closure to prevent global pollution
//it's good to be green
(function () {
    "use strict";
    var history,
        url;
    //set url here
    //I'm making the assumption that no url will have a ',' char in it
    history = localStorage['history'].split(',');
    history.push(url);
    localStorage['history'] = history.join(',');
    console.log(url, history.length);
}());
0 голосов
/ 08 марта 2012

Когда вы просматриваете страницы, среда javascript воссоздается на каждой странице.Таким образом, вы всегда начинаете с пустого массива.

...