Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   динамическое имя переменной (https://javascript.ru/forum/css-html/11578-dinamicheskoe-imya-peremennojj.html)

Артем125 01.09.2010 12:28

динамическое имя переменной
 
Всем привет!

У меня есть скрипт, который работает с переменными созданными перечислением.

var my_tooltip_1 = new Tooltip('trigger_1', 'tooltip_1')
var my_tooltip_2 = new Tooltip('trigger_2', 'tooltip_2')
var my_tooltip_3 = new Tooltip('trigger_3', 'tooltip_3')


Но их окло 100.
Думал сделать массивом, типа этого

for (jT=1; jT<100; jT++){
   my_tooltip_+'jT' = new Tooltip('trigger_'+jT, 'tooltip_'+jT);	
}


но динамически создавать имя переменной не плучается, можно использовать ivent, но эта функция не безопасна

может кто знает что можно сделать

Спасибо!

Riim 01.09.2010 12:42

http://javascript.ru/forum/search.php

Kolyaj 01.09.2010 12:44

Цитата:

Сообщение от Артем125
можно использовать ivent, но эта функция не безопасна

Что это за функция и чем она опасна?

Цитата:

Сообщение от Артем125
Думал сделать массивом, типа этого

for (jT=1; jT<100; jT++){
my_tooltip_+'jT' = new Tooltip('trigger_'+jT, 'tooltip_'+jT);
}

Где здесь массив?

Вам не нужны динамические имена переменных, они никому не нужны. Это плохо, взрывоопасно, и сплошные минусы без единого плюса. Для таких вещей придумали массивы и хэши. Роль хэшей в JS выполняют объекты. В вашем случае нужен обычный массив.

Артем125 01.09.2010 12:45

Вложений: 1
Вообще весь этот модуль для вывода всплывающей подсказки. а тут загвоздка. не понятно где эта переменная используется, в коде ее нет, может как то объект берется по другому

<script type="text/javascript">
// а вот так работает без проблем и ошибок
//var my_tooltip_1 = new Tooltip('trigger_1', 'tooltip_1')
//var my_tooltip_2 = new Tooltip('trigger_2', 'tooltip_2')

//заменил на это 
var arr = new Array()
for (jT=1; jT<80; jT++){
	arr = new Tooltip('trigger_'+jT, 'tooltip_'+jT);
	
}

  Event.observe(window,"load",function() {
    $$("*").findAll(function(node){
      return node.getAttribute('title');
    }).each(function(node){
      new Tooltip(node,node.title);
      node.removeAttribute("title");
    });
  });


а в прикрепленном файле код, который обрабатывает все это, и там нигде не нашел использование этих переменных my_tooltip_2,...

Sweet 01.09.2010 14:37

Т.е. происходит следующее: по клику на элемент появляется окошко с содержимым title? А не проще ли на клик повесить функцию создания этого окна и передавать в нее this.title???

Артем125 01.09.2010 14:49

нашел в чем была проблема))

var arr = new Array()
for (jT=1; jT<80; jT++){
	    arr = new Tooltip('trigger_'+jT, 'tooltip_'+jT);
	     
}


а количество самих объектов было меньше 80, потому и ошибка была))


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