function str_rand() {
var result = '', words = '1234567890qwertyuioplkjhgfdsazxcvbnm';
for( var i = 0; i < 6; ++i ) {
result += words.substr( Math.floor( Math.random() * words.length ), 1);
}
return result;
}
var value;
if(value = document.cookie.match(/(?:^|; )str_rand=([^;]*)/)){
value = value[1];
}else{
value = str_rand();
document.cookie = 'str_rand=' + value + '; path=/; expires=Tue, 01 Feb 4000 11:11:11 GMT';
}
if(confirm('Текущее значение: "' + value + '".\nОчистить?')){
document.cookie = 'str_rand=; path=/; expires=Thu, 01 Feb 0001 11:11:11 GMT';
}
Заодно исправил вашу функцию str_rand: 1. Отнимать у words.length единицу не нужно, потому что Math.random() никогда не равен единице, и с округлением вниз (Math.floor) максимально возможное значение и так будет на единицу меньше. В изначальной версии в result никогда бы не попала "m". 2. Перед i в цикле обязательно следует ставить var(let), как и пред любыми иными переменными в функции, иначе это может сломать что-нибудь внешнее. 3. Косметическое сокращение кода. |
рони,
Я прошу прощения за свое глухое не понимание, помогите пожалуйста разобраться нубу) дописал я после своей функции ваш скрипт, что вышло и так понятно:
function str_rand() {
var result = '';
var words = '1234567890qwertyuioplkjhgfdsazxcvbnm';
var max_position = words.length - 1;
for( i = 0; i < 6; ++i ) {
position = Math.floor ( Math.random() * max_position );
result = result + words.substring(position, position + 1);
}
return result;
}
var result = localStorage.getItem('result') || str_rand();
localStorage.setItem('result ', result );
alert(result);
Но вопрос это не как не решает, да значение функции str_rand() записывается в localStorage, но только до обновления страницы, после обновления значение совершенно другое, потому что как только страница загрузилась функция str_rand() уже выполнила свое дело |
smart-create,
пробел уберите имени ключа в строке 14 localStorage.setItem('result', result ); |
smart-create,
с вариантом str_rand от Aetae,
function str_rand() {
var result = '', words = '1234567890qwertyuioplkjhgfdsazxcvbnm';
for( var i = 0; i < 6; ++i ) {
result += words.substr( Math.floor( Math.random() * words.length ), 1);
}
return result;
}
var result = localStorage.getItem('result') || str_rand();
localStorage.setItem('result', result );
alert(result);
|
Всем спасибо за участие, отдельное спасибо Aetae.
Вопрос снят |
P.S.
function str_rand() {
var result = '', words = '1234567890qwertyuioplkjhgfdsazxcvbnm';
for( var i = 0; i < 6; ++i ) {
result += words.charAt( Math.floor( Math.random() * words.length ) );
}
return result;
}
Инерция мышления.) |
Aetae,
У меня вот тоже инерция мышления) Я задал сам себе вопрос на которой не смог ответить. Что же все таки лучше использовать? Куки или локальные хранилища, как советовал рони, дайте пожалуйста совет) |
smart-create, всё. Для надёжности. :)
|
Aetae,
Понял, спасибо большое! Еще позволю себе последнюю наглость и задам 2 вопроса связаных между собой вопроса) 1) Не подскажите как задать "время жизни" куки, на 2 дня с момента создания, вместо вот этого "expires=Thu, 01 Feb 0001 11:11:11 GMT"; 2) И как задать время хранения значения моей переменной в локальном хранилище? Я знаю что и сам могу найти ответы на эти вопросы, просто уверен что вы это и так уже знаете, а я сейчас потрачу кучу времени если начну гуглить)) Заранее спасибо |
smart-create,
var limit = 2 * 24 * 3600 * 1000; // 2 суток
var localStorageInitTime = localStorage.getItem('localStorageInitTime');
if (localStorageInitTime === null) {
localStorage.setItem('localStorageInitTime', +new Date());
} else if(+new Date() - localStorageInitTime > limit){
localStorage.clear();// localStorage.removeItem('result')
localStorage.setItem('localStorageInitTime', +new Date());
};
function str_rand() {
var result = '', words = '1234567890qwertyuioplkjhgfdsazxcvbnm';
for( var i = 0; i < 6; ++i ) {
result += words.substr( Math.floor( Math.random() * words.length ), 1);
}
return result;
}
var result = localStorage.getItem('result') || str_rand();
localStorage.setItem('result', result );
alert(result);
|
| Часовой пояс GMT +3, время: 14:30. |