![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| kuksha |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 15.6.2011 Репутация: нет Всего: нет |
Пытаюсь сделать 2-мерный массив 650x650 в виде глобального, чтобы потом вызывать из функций.
Сделал это так, на большее знаний не хватило:
Собственно указана сбойная строка, на которой скрипт "вылетает". (вместо zv_n[i] я пробовал подставлять и строки и числа - всё равно сбоит) Наверное лучше посмотреть это вживую в файле: http://info-7.ru/Astro/draw_map5.js строка №171. При этом строка №903
отрабатывает нормально. Что я не так делаю? |
||||
|
|||||
| kuksha |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 15.6.2011 Репутация: нет Всего: нет |
Может просто for не отрабатывает так как это прописано?
Ведь из PHP-файла вызываются конкретные функции из этого js-файла, а заполнение второго измерения этого массива идёт через for вне функций, который то ли отрабатывает то ли нет. С другой стороны - ведь глобальные переменные подцепляются нормально, а некоторые и вычисляются... Не знаю в какую сторону ещё думать... Может есть другие способы задания такого массива? Это сообщение отредактировал(а) kuksha - 8.1.2012, 21:22 |
|||
|
||||
| Amphiluke |
|
|||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 39 Всего: 112 |
kuksha, вам сложно помочь, не видя, что за ошибка. Что пишется в консоль конкретно? Файл вашего скрипта мало чем может помочь в выяснении обстоятельств ошибки. Гораздо легче было бы, если бы вы дали ссылку на страницу, где проявляется баг.
|
|||
|
||||
| kuksha |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 15.6.2011 Репутация: нет Всего: нет |
Вот сама страница, с которой вызывается этот файл:
http://info-7.ru/Astro/nebo_segodnya_geo5.php?zero=1 на ней рисуются линии созвездий, а дальше должны рисоваться звёзды, но их нет - из этого цикла мы и вылетаем... А вот для сравнения: http://info-7.ru/Astro/nebo_segodnya_geo.php?zero=1 |
|||
|
||||
| Amphiluke |
|
|||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 39 Всего: 112 |
Методом простой трассировки скрипта выясняется, что переменные X и Y могут принимать совершенно произвольные значения: как отрицательные, так и бОльшие, чем размерность массива Dot_data. Следовательно, причина в неправильных индексах. |
|||
|
||||
| kuksha |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 15.6.2011 Репутация: нет Всего: нет |
АЙ!!!!!
точно... это же координаты... Очередное спасибо! Amphiluke, а чем Вы пользуетесь для отладки? Может у меня бы вопросов поменьше стало... |
|||
|
||||
| Amphiluke |
|
|||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 39 Всего: 112 |
||||
|
||||
| kuksha |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 15.6.2011 Репутация: нет Всего: нет |
Там много чего "оставленного на потом", начиная с var в каждой строчке...
Я же JS по-большому счёту почти не знаю - это первое что на нём пишу... |
|||
|
||||
| Amphiluke |
|
|||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 39 Всего: 112 |
Кстати (не по теме). Когда пишете документ в новом окне методом document.write, не забывайте закрывать поток вывода методом document.close(). В отличие от document.open(), вызов этого метода обязателен…
|
|||
|
||||
| kuksha |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 15.6.2011 Репутация: нет Всего: нет |
Ага, учту
|
|||
|
||||
| kuksha |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 15.6.2011 Репутация: нет Всего: нет |
Вот такой вопрос образовался:
А как быстрее всего упомянутый в первом сообщении глобальный двумерный массив Dot_data "опустошить" по ходу работы? То есть не залить нулями в цикле, а так чтобы он просто был пустым (null). (по ходу работы заполняются только некоторые его ячейки, остальные должны остаться null) Двойным циклом как-то некрасиво делать, а сделать его заново (когда он весь null) внутри функций наверное помешает его глобальность. Это сообщение отредактировал(а) kuksha - 10.1.2012, 19:09 |
|||
|
||||
| Amphiluke |
|
||||||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 39 Всего: 112 |
Пустой массив и null — не одно и то же. Определитесь, что вам конкретно нужно. Если вы хотите дать понять сборщику мусора, что данные массива более не потребуются, и память, выделенная под массив, может быть освобождена, просто обнулите ссылку.
Если же вам нужно именно «опустошить» массив, можно воспользоваться тем, что свойство length объектов Array доступно для записи.
Почему это глобальность помешает? Напротив, она делает массив доступным из любой точки программы. |
||||||
|
|||||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |