Исправление ошибок
Говорят, что наилучший способ исправить ошибку — это ее не совершать, но сказать проще, чем сделать. Тем не менее можно свести ошибки к минимуму, пользуясь текстовым редактором без полей. Кроме того, отводите каждой команде JavaScript отдельную строку. Ни к чему разбивать длинные строки на несколько коротких. Это само по себе может привести к ошибке. И все же, готов спорить, что каждый раз, принимаясь за скрипты, вы будете получать такие сообщения. Так уж давайте разберемся, как их устранять.
В этих всплывающих окошках есть одна замечательная вещь: они сами говорят, где и в чем состоит проблема. Взгляните на сообщение. Это ошибка сценария, и находится она на строке 23. Более того, сообщение прямо говорит, в чем состоит ошибка. Разве не здорово было бы завести такой порядок и в HTML?
Строка ошибки
Строку с ошибкой нужно отсчитывать от самого верха документа HTML, а не от первой строки JavaScript. Например, в приведенном ниже документе допущена ошибка на строке 9. Это ошибка синтаксиса, так как пример (instance) не заканчивается на той же строке, где и начался. Видите, как скобкаперескочиланаследующую строчку?
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="javascript">
document.write("text for the page"
)
</SCRIPT>
</BODY>
</HTML>
Но почему ошибка на строке 9, а не 8? Потому, что вы начинаете считать с верхнего края документа HTML, не пропуская ни одной строчки. Вот этот документ еще раз с пронумерованными строчками.
(строка 1)<HTML>
(строка 2) <HEAD>
(строка 3) <TITLE></TITLE>
(строка 4) </HEAD>
(строка 5) <BODY
(строка 6)
(строка 7) <SCRIPT LANGUAGE="javascript">
(строка 8) document.write("text for the page"
(строка 9) )
(строка 10) </SCRIPT>
(строка 11) </BODY>
(строка 11) </HTML>
Так что, считайте
все строки, даже пустые.
Ну и что дальше?
Как только вы нашли строку с ошибкой, необходимо решить, что делать. Чаще всего это будет синтаксическая ошибка — либо разорванная строка, либо опечатка, либо двойные кавычки вместо одинарных и тому подобное.
Если это ошибка сценария, значит, команда, на которую указывает сообщение, не укладывается в логическую последовательность. Например, команда вызывает кнопку, а в скрипте на самом деле указано текстовое поле.
Многократные сообщения
Ничто не раздражает меня больше, чем многократные сообщения об ошибках. Можно только сидеть и смотреть, как на экране плодятся окошки. Когда-то я думал, что многократные окна означают многократные ошибки. Не всегда.
JavaScript — это чрезвычайно логичный язык, требующий, чтобы все шло своим чередом, друг за дружкой. Допустим, у вас 10 ошибок в длинном скрипте. Сообщения накладываются одно на другое, и последняя обнаруженная компьютером ошибка окажется сверху. Не набрасывайтесь на нее сразу, возможно, в действительности ее даже не существует.
Может случиться так, что первая ошибка в скрипте и вызовет все остальные. Так что исправлять их следует от начала документа HTML. Сколько раз было так, что у меня выскакивало штук 20 окон, а разрешить проблему удавалось исправлением одной единственной первой ошибки!
Поэтому я советую вам исправлять ошибки по одной от начала до конца. И каждый раз, исправив одну ошибку, запускайте скрипт. Можно получить 20 окошек с восклицательным знаком, а исправлять придется одну или две ошибки.
Определение отсутствует
Эта ошибка сценария тоже частенько встречается. Она означает, что в скрипте что-то не согласовано. Я всегда слежу за тем, чтобы не вписать какую-нибудь строку раньше, чем нужно. Если дело не в этом, попробуйте стереть строку с ошибкой, ведь ее всегда можно вернуть на место. Случаются и банальные опечатки. Приглядитесь к тексту повнимательнее, опечатки случаются чаще, чем можно себе представить.
Вот практически все, что на данном этапе можно сказать про ошибки. Теперь у вас хватит знаний, чтобы исправить 99% подобных неприятностей. Просто помните, что сообщение — это на самом деле плюс. Без них нам пришлось бы сидеть, тупо уставясь в пустую страницу, не имея ни малейшего понятия, в чем проблема.
Содержание раздела