Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
 Аватар для Kaktuz
7 / 7 / 4
Регистрация: 28.05.2012
Сообщений: 169

Массив ошибка

28.05.2012, 19:59. Показов 893. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Помогите с решением проблемы. Скрипт явно не хочет полноценно работать. По видимому это как-то связанно с массивом, но вот что конкретно. Не могу понять.
JavaScript
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
29
// массив
var myNotes = new Array();
myNotes[1][1] = "text 1.1";
myNotes[5][1] = "text 5.1";
// функция вывода данных
function myCreateDate(y, m, d){
var k = 1;
dat = new Date(y, m, d);
if (dat.getDay() == 0) h = 7; else h = dat.getDay();
for (i = 1; i <= 35; i++)
    {
    if (i >= h)
        {
        if (myNotes[m][k] == null)
            {
            document.getElementById(i).innerHTML = k;
            }
        else
            {
            document.getElementById(i).innerHTML = "<a href='#' OnClick=\"alert('"+myNotes[m][k]+"');\">"+k+"</a>";
            }
        k++;
        }
    else
        {
        document.getElementById(i).innerHTML = "-";
        }
    }
}
И кнопка запуска:
HTML5
1
<button OnClick="myCreateDate(2012, 4, 1);">Жмакай!</button>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.05.2012, 19:59
Ответы с готовыми решениями:

Двумерный массив (массив массивов): ошибка, выводимая IntelliSense
не могу понять в чем проблема, выдает ошибку при использовании двумерного массива, причем хоть ошибка и высвечивается в студии программа...

Двумерный массив.Найти сумму элементов в каждом столбце и занести ее в новый одномерный массив.Где ошибка?
program Project14; {$APPTYPE CONSOLE} uses SysUtils; type mas1=array of integer; mas2=array of integer; Var...

Массив и ошибка
Вообщем решил сделать календарь с заметками. Так вот, что - то я делаю не так. Public Class Form1 Dim CalM()()() As String ...

13
Эксперт JSЭксперт HTML/CSS
2436 / 1115 / 312
Регистрация: 23.06.2011
Сообщений: 3,529
28.05.2012, 20:51
Цитата Сообщение от Kaktuz Посмотреть сообщение
if (myNotes[m][k] == null)
у тебя есть не определенные ячейки в обоих слоях, поэтому эта проверка может не работать, и не null там, должно быть undefined.
Цитата Сообщение от Kaktuz Посмотреть сообщение
document.getElementById(i).innerHTML = k;
ИД не может быть числом, вернее начинаться с цифры
это то, что в глаза бросилось
1
 Аватар для Kaktuz
7 / 7 / 4
Регистрация: 28.05.2012
Сообщений: 169
28.05.2012, 21:40  [ТС]
Все безрезультатно плохо.
JavaScript
1
2
3
4
if (myNotes[m][k] == undefined)
if (myNotes[m][k] == 'undefined')
if (typeof myNotes[m][k] == undefined)
if (typeof myNotes[m][k] == 'undefined')
ID в виде цифры не мешает, оно работает, но все же добавил букву и ничего не изменилось.
JavaScript
1
document.getElementById('K'+i+'Z').innerHTML = k;
Добавлено через 14 минут
Провел ряд тестов и впал в недопонимание. Код явно не хочет работать если в номер массива подставлять переменную. К примеру так:
if (myNotes[1][1] == null)
Все отлично работает. Проверят существует или нет и продолжает условие. Как-то... Вообще не понятно. Почему так получается.
0
 Аватар для Posik
11 / 10 / 4
Регистрация: 31.08.2010
Сообщений: 187
28.05.2012, 21:52
Дак у тебя создан одномерный масив а ты пытаешся использовать как матрицу....

И еще ты в функцию посылаеш в этом примере в качестве переменной 'm' значение 4 и она является у тебя первым индексом матрици, а у тебя такой не создан....
1
 Аватар для Daredevi1
311 / 303 / 78
Регистрация: 09.05.2009
Сообщений: 723
28.05.2012, 21:58
Цитата Сообщение от Kaktuz Посмотреть сообщение
myNotes[1][1] = "text 1.1";
myNotes[5][1] = "text 5.1";
Это неверно.

В js нет, как таковых, двумерных массив. Обычно используется массив массивов.
Например:

JavaScript
1
2
var arr = [[1,2,3], [4,5,6], [7,8,9]];
alert(arr[1][1]);
0
 Аватар для Posik
11 / 10 / 4
Регистрация: 31.08.2010
Сообщений: 187
28.05.2012, 22:04
Цитата Сообщение от Daredevi1 Посмотреть сообщение
В js нет, как таковых, двумерных массив
Вот про это я и написал... Просто с паскаля привычка говарить что это матрица...

Но я использовал такой синтаксис...
JavaScript
1
2
3
4
5
6
myNotes = new Array();
myNotes[1] = new Array();
myNotes[5] = new Array();
 
myNotes[1][1] = "text 1.1";
myNotes[5][1] = "text 5.1";
Может и понятия такого нет, но по логике создания и структуры его можно назвать как матрица так и двумерный масив...
0
 Аватар для Kaktuz
7 / 7 / 4
Регистрация: 28.05.2012
Сообщений: 169
28.05.2012, 22:51  [ТС]
И еще ты в функцию посылаеш в этом примере в качестве переменной 'm' значение 4 и она является у тебя первым индексом матрици, а у тебя такой не создан....
Так в этом вся суть. Проверять существует ли данная ячейка или нет.
И как это нету многомерных массивов. А это тогда что? Как в PHP так и в JS все отлично работает. Может просто не так называется, но я так понимаю.
JavaScript
1
2
3
4
5
6
var ABC = new Array();
ABC[1] = Array();
ABC[1][1] = Array();
ABC[1][1][1] = Array();
ABC[1][1][1][1] = "Hello world!";
alert(ABC[1][1][1][1]); // Hello world!
0
 Аватар для Posik
11 / 10 / 4
Регистрация: 31.08.2010
Сообщений: 187
28.05.2012, 23:15
Про масивы болше чем 2-ух мерные я не слышал... Но не в этом суть, так как ты проверяеш наличие ячейки делать нельзя, так как кампелятор не знает где сматреть(для этого нужна знать как работает кампилятор)... Поэто к несуществующей ячеке через индекс обращатся нельзя!!
0
 Аватар для Kaktuz
7 / 7 / 4
Регистрация: 28.05.2012
Сообщений: 169
29.05.2012, 00:57  [ТС]
Цитата Сообщение от Posik Посмотреть сообщение
Про масивы болше чем 2-ух мерные я не слышал... Но не в этом суть, так как ты проверяеш наличие ячейки делать нельзя, так как кампелятор не знает где сматреть(для этого нужна знать как работает кампилятор)... Поэто к несуществующей ячеке через индекс обращатся нельзя!!
Так что. Ни как нельзя организовать проверку ячейки что бы было все правильно?
0
Просто любитель
 Аватар для GuardCat
626 / 464 / 120
Регистрация: 20.01.2011
Сообщений: 865
Записей в блоге: 2
29.05.2012, 06:36
Попробуйте оператор in.
JavaScript
1
2
3
4
a = [0,1,2,3];
alert("4" in a); // false --- нет такого элемента
a[4] = undefined;
alert("4" in a); // true --- теперь есть
0
Эксперт JSЭксперт HTML/CSS
2436 / 1115 / 312
Регистрация: 23.06.2011
Сообщений: 3,529
29.05.2012, 11:17
Цитата Сообщение от Posik Посмотреть сообщение
Поэто к несуществующей ячеке через индекс обращатся нельзя!!
обращаться не имеет смысла, а проверить существует ли такая ячейка можно.
Цитата Сообщение от Daredevi1 Посмотреть сообщение
В js нет, как таковых, двумерных массив. Обычно используется массив массивов.
это всего лишь термины, не стоит к ним придираться, мы читаем разные книги, а их писали и переводили разные люди.
Цитата Сообщение от GuardCat Посмотреть сообщение
Попробуйте оператор in.
скорей всего излишне
просто не понимаю что челу надо потому и подсказать не могу

попробуй создать массив так, или как сказал Daredevi1, это одно и тоже
JavaScript
1
2
3
4
5
var mass=[];
mass[0]=[];
mass[1]=[];
...
mass[N]=[];
создашь правильно, будет меньше проблем

Добавлено через 3 часа 27 минут
кто что вернет

JavaScript
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
(function(){
var mass=[], k;
 
alert(typeof mass);//массив создан
 
alert(mass[0]);//undefined а не null
 
mass[0]=[];
alert(typeof mass[0]+'\n'+typeof mass[0][0]);
// undefined не всегда равен null
alert(mass[0][0]===null);// если проверять "правильно" то = false
 
mass[1]=[22222];
mass[3]=111111;
mass[5]=[];
k=mass.length;
while(k--){
try{
alert(k+'\n'+typeof mass[k]+'\n'+typeof mass[k][0]);}
 
catch(er){
alert(k+'\nошибка'+'\nошибка');}};
 
 
 
 
})();
0
 Аватар для Posik
11 / 10 / 4
Регистрация: 31.08.2010
Сообщений: 187
29.05.2012, 17:37
Цитата Сообщение от Kaktuz Посмотреть сообщение
Так что. Ни как нельзя организовать проверку ячейки что бы было все правильно?
Дак ты просто замени суть... создай сначала масив в ячейках которого по умолчанию будет какоето значение которое ты быдиш принимать как будто ячейкм нет, а когда там что то твой код делает то пусть он не создает ячейки а меняет их значение на то за которое ты будиш приминят как будто ячейка есть
0
Эксперт JSЭксперт HTML/CSS
2436 / 1115 / 312
Регистрация: 23.06.2011
Сообщений: 3,529
29.05.2012, 20:43
Цитата Сообщение от Posik Посмотреть сообщение
создай сначала масив в ячейках которого по умолчанию будет какоето значение которое ты быдиш принимать как будто ячейкм нет
хорошая идея, сюда просится пустая строка
0
 Аватар для Kaktuz
7 / 7 / 4
Регистрация: 28.05.2012
Сообщений: 169
30.05.2012, 18:27  [ТС]
Спасибо всем. Уже решил проблему. Правильно было сказано. Нельзя проверить корневую ячейку массива если ее начало не создано.
Цитата Сообщение от Posik Посмотреть сообщение
И еще ты в функцию посылаеш в этом примере в качестве переменной 'm' значение 4 и она является у тебя первым индексом матрици, а у тебя такой не создан....
JavaScript
1
2
3
4
5
6
7
// Не правильно
var myNotes = new Array();
myNotes[1][1] = "text 1.1";
// Правильно
var myNotes = new Array();
myNotes[1] = Array();
myNotes[1][1] = "text 1.1";
Цитата Сообщение от Posik Посмотреть сообщение
Дак ты просто замени суть... создай сначала масив в ячейках которого по умолчанию будет какоето значение которое ты быдиш принимать как будто ячейкм нет, а когда там что то твой код делает то пусть он не создает ячейки а меняет их значение на то за которое ты будиш приминят как будто ячейка есть
Это было бы правильно если бы у меня было бы 10 ячеек в массиве. А если их с выше 300? Понятное дело что есть цикл, но зачем занимать память лишним мусором.
Вообщем решил так:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
var myNote = Array();
myNote[1] = Array();
myNote[1][1] = "Text 1.1";
if (myNote[1] != undefined){
    if (myNote[1][1] != undefined){
        alert(myNote[1][1]);}
    else {
    alert('Error!');}
}
else {
alert('Error!');}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.05.2012, 18:27
Помогаю со студенческими работами здесь

Массив и ошибка
После того, как ввожу какое-либо значение, компилятор выдаёт ошибку: Exception in thread &quot;main&quot;...

массив - ошибка
Определить есть ли в массиве Q(50) заданное число Х, если нет то определить ближайщее к нему. #include &lt;stdio.h&gt; #include...

Массив, Си++, ошибка
Ошибка: Too many initializations. Подскажите, пожалуйста, как ее исправить. int mas = { {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, ...

[C++] В чем ошибка массив
Прога ловит краш когда 1 число больше 2го.. По ходу ошибся в работе с массивами. /* Дан двумерный массив из четного числа строк....

Массив,в чем ошибка?
Дан массив из к целых чисел. Переменной t присвоить значение true, если в массиве нет нулевых элементов, и false в противном случае. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru