Как соединить имя переменной в JS

Mountin

Новичок
Как соединить имя переменной в JS

Как соединить имя переменной cal
Что бы получилось что-то типа:

cal0 = ...
cal1 = ...
cal2 = ...

в PHP это бы выглядело так

<?
$cal{$i}
?>
А вот в JavaScript как?:confused:
Вариант с массивом не подходит
 

akd

dive now, work later
Команда форума
а вариант с массивом не подходит по религиозным соображениям? :)

man eval
 

Mountin

Новичок
akd
нет просто не подходит.

Что значит man eval ?

-~{}~ 23.02.07 16:50:

Массив не походит потому, что нада вот так:

<input name="start[1]" type="text">
<a href="javascript:cal0.popup();"><img src="images/cal.gif" border="0"></a>

cal0 = new calendar2(document.forms['form'].elements['start[1]']);

Таких элементов будет много.
Как можно сделать
cal0 =...
cal1 = ...
Спасибо
 

serglt

Анус, ой, Ахтунг
> Что значит man eval ?
это значит куришь документацию по функции eval

> Как можно сделать
Берешь и делаешь
 

phprus

Moderator
Команда форума
Mountin
А cal[0] = new ... и cal[0].popup() использовать кончно же религиозные соображения не позволяют?
 

dimagolov

Новичок
ну и зачем изврат такой?

начнем с того, что вместо form[].elements[] правильнее будет юзать getElementById ("id"+i), тут и цикл делается.

главное, что будут грабли с this в функции popup. как это не кажется странным, но он будет указывать на DOM-объект ancor, который его будет вызывать, но никак не на cal0....calX.

пиши функцию, перехватывай event, смотри там
Код:
var target = (evt.target) ? evt.target : evt.srcElement;
это и будет тебе указателем на объект в котором произошло событие.
или просто используй this - он в обработчике тоже на объкт в котором событие произошло указыавет, но в таком случае обработчик придется указыавать для каждого элемента отдельно.

кстати, в твоей конструции этот вопрос можно решить так:
обработчик вообще не указывать, а в конструкторе calendar2 прописать:

Код:
function calentar2 (objectToGenerateEvent) {
   this.EventObj = objectToGenerateEvent;

   this.EventObj.onclick = function () {
       this.name = //ссылка на сам элемент в котором словили событие и его свойство name
   }
}
-~{}~ 23.02.07 10:50:

Автор оригинала: Mountin
phprus
к сожелению cal[0] не может быть объектом.
это почему собственно? ссылку на книжку, стандарт, пример.

Код:
function abc () {
	var args = abc.arguments;
	
	window.alert ("Tha year is "+ args[0].getFullYear ());
}

var TodayDate = new Date ();

abc (TodayDate);
проверяй работает или нет. и получается ли args[0] объектом, у которого и методы есть если передать abc () первым арнументом объект типа Date :)
 
Сверху