![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
popov654 |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 9.1.2009 Репутация: нет Всего: нет |
Я вот тут написал на JavaScript игру сапёр - а она не работает. Браузер сначала зависает на полминуты, а потом выдаёт сообщение, что скрипт замедляет работу браузера и его нужно остановить. Пробовал нажимать НЕТ пять-шесть раз, не отрабатывает. Похоже, где-то бесконечное зацикливание, но я не знаю, где именно. Не могли бы вы посмотреть?
![]()
Это сообщение отредактировал(а) popov654 - 16.1.2009, 17:02 |
||||||
|
|||||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 48 Всего: 386 |
Math.round - это не вызов функции, а получение указателя на нее, а вот Math.round() - вызов функции.
Еще, чтобы не писать 81 строку с батонами когда-то был придуман JavaScript ![]()
Это я не про то, что прием хороший, но как-то страшно смотреть на 81 строку -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
IDVsbruck |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 778 Регистрация: 12.11.2006 Репутация: 7 Всего: 22 |
Ужасть ...
Может, лучше сделать таблицу 9х9 и для кроссбраузерности поместить в каждую див с заданными размерами? Тогда каждому диву можно задать один и тот же обработчик, который по номеру ячейки и строки определит свое положение и его можно будет идентефицировать и обработать. А столько кнопок - это как-то несерьезно ... |
|||
|
||||
ksnk |
|
||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 48 Всего: 386 |
А чем этот вариант "серёзнее" представленного? Те-же 81 ячейка (дивы) и те-же установщики событий ![]() Хотя, если заменить баттоны на дивы со стилем float:left (добавляем свойство в стили) все останется примерно так-же, на дивы точно так-же навешиваются обработчики событий, однако выглядеть будет значительно кроссбраузернее. Да и форма там нафик не нужна...
Так достигается относительно здоровый минимализм в html разметке Добавлено @ 19:42 Ну и везде нужно работу именем заменить на работу с id Добавлено @ 19:45 popov654, Тoлько что заметил... Когда я говорил про Math.round, я имел ввиде Math.random в 6-й строке Это сообщение отредактировал(а) ksnk - 17.1.2009, 19:47 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
||||
|
|||||
popov654 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 9.1.2009 Репутация: нет Всего: нет |
Ну я исправил ошибку с random, и виснуть перестало. Ещё я исправил лажу с цветом текста на кнопке: он был таким же, как цвет фона. Но всё равно ничего не работает. Ни в IE, ни в FF. В чём просчёт?..
![]() Это сообщение отредактировал(а) popov654 - 17.1.2009, 22:23 |
|||
|
||||
popov654 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 9.1.2009 Репутация: нет Всего: нет |
Не уверен, что это хорошая идея. Была у меня программа на PHP - классный журнал (для оценок). И всё бы хорошо, но пришло мне в голову в очередную версию добавить кнопку полной очистки таблицы. А было там вот что: огроменная таблица, в каждой ячейке по текстовому полю. Вроде всё просто: получить указатель на поле, value=пустая строка... Так вот, ни какими ухищрениями мне этого добиться не удалось...просто из-за высокого уровня вложенности (form->table->tr->td->input) никак было не получить указатель на объект. Ни getElementById(), ни getElementsByTagName(), ни прямое обращение через форму не помогли. То есть ошибок не выдаёт, но результат нулевой (ничего не чистит). Так что с тех пор я таблиц избегаю. Может, я тогда в чём-то был неправ? P.S. Пришлось тогда очистку средствами PHP делать... |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 48 Всего: 386 |
Вообще-то процесс называется отладка. Проще всего поставить FireFox, к нему плагин FireBug и получится вполне полноценный отладчик для JavaScript. В принципе полезно, конечно поставить еще и отладчик из MsOffice для отладки IE специфичных багов, но это пока не очень актуально
![]() А так arr - используется как глобальный массив. А объявлен он в функции init... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
popov654 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 9.1.2009 Репутация: нет Всего: нет |
А где его объявить? До первой функции? Сразу после <script>?
|
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 48 Всего: 386 |
Ну да. А попробовать? там еще есть переменные, которые должны по сути быть глобальными...
imho, продолжение сколь-нибудь конструктивного разговора возможно только после установки JavaScript отладчика. Иначе, "удаленная отладка" в форуме затянется надолго... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
popov654 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 9.1.2009 Репутация: нет Всего: нет |
Да я уж попробовал, прежде чем это писать. Не помогло. На всякий случай спросил. А FireBug у меня действительно не было. Сейчас вот установил. Он что, будет мне писать, в чём мои ошибки?
![]() Добавлено через 7 минут и 5 секунд Чёрт, он какой-то непонятный. Как с ним вообще работать? Простите, никогда не работал с отладчиками. |
|||
|
||||
Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 17 Всего: 137 |
нажимаешь в правом нижнем углу на жучка, и потом в левой верхней части открывшегося меню нажимаешь Inspect. Выбираешь таб Консоль, активируешь нужные элементы и радуешься показу ошибок. |
|||
|
||||
popov654 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 9.1.2009 Репутация: нет Всего: нет |
Ну сделал. Так то-то и оно, что похоже ошибок нет. Вот только непонятно: он про мои батоны пишет, что стиль не определён. А он отлично задан. Бред какой-то... Кстати мне моя интуиция подсказывает (да и FireBug тоже), что программная часть функционирует нормально. Массив arr[] заполняется прекрасно, так как я хотел.
Выходит, дело в кнопках! Он не хочет с ними ничего делать: ни цвет фона менять, ни цвет текста, ни надпись на кнопке. Единственное, что, как мне показалось, срабатывает - это disable. А кому нужна игра, которая чего-то там вычисляет, а виду не показывает? Мне всё же нужно, чтобы графический интерфейс работал... Да и надпись о проигрыше что-то не вылазит, даже если все кнопки перетыкать. |
|||
|
||||
Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 17 Всего: 137 |
И стили для изменяемых элементов должны быть изначально установлены (в html или css). |
|||
|
||||
popov654 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 9.1.2009 Репутация: нет Всего: нет |
Стили установлены, это раз. А во-вторых насчёт bg. Сначала у меня было backgroundColor, и не работало. Тогда я и исправил. А в третьих, у меня до этого был скрипт, в котором bgColor 100% работало. Ну не знаю, может, это дурной тон так писать, как я пишу...но только я теперь совсем запутался. Всё вроде есть, стили в CSS определены, а не работает. И потом, ну хорошо, а innerHTML она почему не переписывает? Там вроде всё правильно.
Вообще, хотелось бы научиться работать с объектами: всякими дивами, кнопками, полями ввода... А то всё время мне с этим катастрофически не везёт. И как умные люди крутые сайты на javascript делают? Может, есть какой-то секрет?.. ![]() ![]() Это сообщение отредактировал(а) popov654 - 23.1.2009, 17:22 |
|||
|
||||
Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 17 Всего: 137 |
element.style.backgroundColor - это изменение CSS-стиля, это правильно и работает во всех браузерах и входит в стандарт XHTML element.bgColor - это изменение HTML аттрибута. Работает как я думаю только в ИЕ и не входит в стандарт XHTML Далее, click() - это метод-обработчик события onclick, так что так функцию называть нельзя. |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |