Программирование > JavaScript & JScript
Не работает скрипт
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] массив ничего не хочет
Навигация
Перейти к полной версии