Программирование > JavaScript & JScript

Не работает скрипт

(1/2) > >>

Ilych:
ITT = new Array(1);
ITB = new Array(10,10);
ITA = new Array(10,10);
ITT[1]=\'Встреча одноклассников\';
ITB[1,1]=\'Встреча одноклассников в кафе [24.12.2000]\';
ITA[1,1]==\'paty2412\';

ITB[1,2]=\'-\';

alert(ITB[1,1]);

ITT[2]=\'Разное из снятого мной\';
ITB[2,1]=\'Разное из снятого мной\';
ITA[2,1]=\'gallery1\';

ITB[2,2]=\'К В Н [лето 2002 год]\';
ITA[2,2]=\'kvn\';

ITB[2,3]=\'-\';
alert(ITB[1,1]);

В первый раз Alert выдает \'Встреча одноклассников в кафе [24.12.2000]\'

а во второй \'Разное из снятого мной\'

не пойму в чем проблема

mike:
Причина в некорректном понимании многомерных массивов в JS. Конструктор массива может принимать одно значение как число элементов или набор значений как перечисление элементов массива. В
--- Код: ---new Array(10,10)
--- Конец кода ---
создается массив из двух элементов, а не двумерный массив.

После этого, при

--- Код: ---ITB[1,1]=\'Встреча одноклассников в кафе [24.12.2000]\';
--- Конец кода ---

вначале вычисляется значение выражения

--- Код: ---1,1
--- Конец кода ---
,
которое равно 1, а потом строковое значение присваивается второму элементу массива ITB, т.е. физически строка принимает вид

--- Код: ---ITB[1]=\'Встреча одноклассников в кафе [24.12.2000]\';
--- Конец кода ---


Аналогично при втором присваивании: результатом вычисления выражения
--- Код: ---2,1
--- Конец кода ---
будет также единица.

Для того, чтобы это это заработало, нужно поправить код где-то так:

--- Код: ---ITT = new Array(1);
ITB = new Array(10);
ITA = new Array(10);
ITT[1]=\'Встреча одноклассников\';

ITB[1] = new Array(10);
ITA[1] = new Array(10);
ITB[1][1]=\'Встреча одноклассников в кафе [24.12.2000]\';
ITA[1][1]==\'paty2412\';

ITB[1][2]=\'-\';

alert(ITB[1][1]);

--- Конец кода ---


ЗЫ. Нумерация элементов массива в JS идет с 0 а не с 1.

Ilych:
Спасибо за ответ.
А нумерацию веду с 1 потомучто мне так удобно.

Ilych:
Поправил на

ITT = new Array(10);
ITB = new Array(10);
ITA = new Array(10);
ITT[1]=\'qwqwqwq\';
ITB[1][1][2]=\'paty2412\'

Ругается Опера:
Inline script thread
Error:
name: TypeError
message: Statement on line 8: Expression evaluated to null or undefined and is not convertible to Object: ITB[1]
Backtrace:
  Line 8 of inline#2 script in file://localhost/C:/Common/Новая%20папка/БезИмени.htm
    ITB[1][1][2] = "paty2412";

ИЕ6 ругается:
"ITB.1.1"- есть null или не является объектом

Ilych:
Кроме как одномерный ITB[1] массив ничего не хочет

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии