Показать сообщение отдельно
  #11 (permalink)  
Старый 04.11.2016, 14:45
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,583

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. Косметическое сокращение кода.
__________________
29375, 35

Последний раз редактировалось Aetae, 04.11.2016 в 14:51.
Ответить с цитированием