Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.06.2010, 15:41
Аватар для Vulkan
Профессор
Отправить личное сообщение для Vulkan Посмотреть профиль Найти все сообщения от Vulkan
 
Регистрация: 25.05.2010
Сообщений: 511

Динамическое значение (например длину массива) запись в постоянное
Здравствуйте, столкнулся с проблемой и не могу понять как решить, допустим:
function test(){
...
num=array.length // значение меняется часто
elem.onclick=function (){hide(num)} //закрыть объект с ID=num

Вот мне надо чтобы num был не текущий, а тот что был на определённый момент, вопрос - как записать динамически меняющее значение на данный момент в переменную, и чтобы там уже осталось это значение. Помогите пожалуйста, может в константу записать (хотя я о них в JS не слышал )?
Ответить с цитированием
  #2 (permalink)  
Старый 15.06.2010, 15:48
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

замыкания
Ответить с цитированием
  #3 (permalink)  
Старый 15.06.2010, 15:51
Аватар для Vulkan
Профессор
Отправить личное сообщение для Vulkan Посмотреть профиль Найти все сообщения от Vulkan
 
Регистрация: 25.05.2010
Сообщений: 511

Сообщение от Gvozd Посмотреть сообщение
замыкания
Спасибо большое, сейчас буду про них читать
Ответить с цитированием
  #4 (permalink)  
Старый 15.06.2010, 20:28
Аватар для Vulkan
Профессор
Отправить личное сообщение для Vulkan Посмотреть профиль Найти все сообщения от Vulkan
 
Регистрация: 25.05.2010
Сообщений: 511

Не могу понять, например, что здесь не так:
function test()
{
tabs[0] = 0
num=tabs.length-1 
tabs.push(num)
var numtab=function() {num=tabs.length-1}
return numtab}



И уже если подставить в другую функцию numtab, то не работает ничего, а если num то старая проблема - tabs.length часто меняется и не запоминается в переменной посстояно.
Ответить с цитированием
  #5 (permalink)  
Старый 15.06.2010, 20:47
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Vulkan
Не могу понять, например, что здесь не так:
А что здесь должно быть так?
Ответить с цитированием
  #6 (permalink)  
Старый 15.06.2010, 21:09
Аватар для Vulkan
Профессор
Отправить личное сообщение для Vulkan Посмотреть профиль Найти все сообщения от Vulkan
 
Регистрация: 25.05.2010
Сообщений: 511

в первом посте всё изложено, пытаюсь сделать замыкание
Ответить с цитированием
  #7 (permalink)  
Старый 15.06.2010, 21:41
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

В первом посте у вас переменная глобальная.
Ответить с цитированием
  #8 (permalink)  
Старый 15.06.2010, 22:00
Интересующийся
Отправить личное сообщение для qwoiejfoiej Посмотреть профиль Найти все сообщения от qwoiejfoiej
 
Регистрация: 02.06.2010
Сообщений: 21

Замкните лучше так.
elem.onclick = function(a){ return function() {hide(a)}}(num);
Ответить с цитированием
  #9 (permalink)  
Старый 16.06.2010, 10:10
Аватар для Vulkan
Профессор
Отправить личное сообщение для Vulkan Посмотреть профиль Найти все сообщения от Vulkan
 
Регистрация: 25.05.2010
Сообщений: 511

qwoiejfoiej,не, это что-то уже инопланетное =). Kolyaj, переменная мне нужна глобальная, но вообще можно и сделать её локальной, но проблемы это не решает, тут вроде даже не в замыкании дело... Блин, вот проблема попалась...
Ответить с цитированием
  #10 (permalink)  
Старый 16.06.2010, 10:17
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Так чего вы от неё хотите, если вы её меняете постоянно? qwoiejfoiej показал, что вам нужно.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск