Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Защита значения переменной.. (https://javascript.ru/forum/events/30624-zashhita-znacheniya-peremennojj.html)

gJam 10.08.2012 09:25

Защита значения переменной..
 
Добрый день!
У меня вопрос, как можно "защитить" значение переменной?
Суть: есть таймер, в который передается значение с помощью php..
Это значение используется в методе таймера..
Но банальный: javascript: param = n; где n-временное значение.
Отбрасывают таймер на необходимое значение..
Как "защитить" эту переменную от такого шага?
(переприсваивание в теле тоже не выход.. так как и те "переприсвоенные" можно поменять..)
OnChange вешать тоже на мой взгляд бессмысленно, ведь переменная таймера всегда меняется..

Deff 10.08.2012 09:39

gJam,
код таймера в студию

gJam 10.08.2012 09:40

function processTimer(){
           
  if (limit > 0) {
    setTimeout("processTimer()",1000);
    limit--;
  } else {
    timer_hour = '00'
    timer_min = '00'
    timer_sec = '00'
    /*document.testCheck.submit();*/
  }  
  var timer_hour = parseInt(limit/3600);
  var temp_min = limit - timer_hour*3600;
  var timer_min = parseInt(temp_min/60); 
  var timer_sec = temp_min - timer_min*60;
  
  if (timer_hour < 10) timer_hour = '0'+timer_hour;
  if (timer_min < 10) timer_min = '0'+timer_min;
  if (timer_sec < 10) timer_sec = '0'+timer_sec;
  
  // вывод времени
  document.getElementById('hour_timer').innerHTML=timer_hour;
  document.getElementById('minute_timer').innerHTML=timer_min;
  document.getElementById('second_timer').innerHTML=timer_sec;
}

Limit получает значение "снаружи", при генерации страницы..
т.е.
<script type='text/javascript'>Var limit = (предположим) 500;</script>
<script type='text/javascript' src='путь до файла с методом'></script>

Deff 10.08.2012 09:42

gJam,
Какую переменную защищаем ?

gJam 10.08.2012 09:45

которая является носителем времени, т.e. limit

gJam 10.08.2012 10:02

Дзен-трансгуманист,
Но и таймер перестаёт работать..
После функции таймера еще есть:
processTimer;
var saveOnLoad = window.onload;
window.onload = function(){
    saveOnLoad();
    processTimer();
}

Вызов функции и помещение в onload с сохранением предыдущих функций
т.е. похоже ошибка в работе связана с обращение к processTimer

vadim5june 10.08.2012 10:13

Цитата:

Сообщение от gJam
переприсваивание в теле тоже не выход.. так как и те "переприсвоенные" можно поменять.

переприсвоенные будут уже локальными переменными и защищены от случайного изменения на глобальном уровне

gJam 10.08.2012 10:16

Цитата:

Сообщение от vadim5june (Сообщение 196120)
переприсвоенные будут уже локальными переменными и защищены от случайного изменения на глобальном уровне

Как сейчас обратиться к функции представленной Дзен-трансгуманистом?

gJam 10.08.2012 10:28

Большое спасибо всем участникам обсуждения!

Deff 10.08.2012 10:32

gJam,
<script type="text/javascript">
var limit = 10
var DecrTimer = (function( limit ){
    var Lm2 = limit+1;
    return LIM=function () {
	Lm2--;
         return Lm2;
    }
})(limit)

alert(LIM())
alert(LIM())
alert(LIM())
</script>


Внутри функции processTimer() пользуетесь не limit - а такой конструкцией Tim=LIM()


Часовой пояс GMT +3, время: 00:39.