Подключение и выполнение javascript
В этом разделе мы понемногу рассмотрим все основные элементы javascript. Это позволит тут же писать и тестировать простейшие скрипты.
Javascript подключается напрямую в HTML-файл. Самый простой способ - это написать javascript-команды внутрь тега <script> где-нибудь в теле страницы.
Когда браузер читает HTML-страничку, и видит <script> - он первым делом читает и выполняет код, а только потом продолжает читать страницу дальше.
Так, в следующем примере будет показано начало страницы, затем три раза выполнится функция alert, которая выводит окошко с информацией, а только потом появится остальная часть страницы.
<html>
<body>
<h1>Считаем кроликов</h1>
*!*
<script type="text/javascript">
for(var i=1; i<=3; i++) {
alert("Из шляпы достали "+i+" кролика!")
}
</script>
*/!*
<h1>...Посчитали</h1>
</body>
</html>
В этом примере использовались следующие элементы.
- <script type="text/javascript"> ... </script>
- Тег
<script> сообщает браузеру о том, что внутри находится исполняемый скрипт. Атрибут type говорит о том, что это javascript. Вообще говоря, атрибут может отсутствовать - разницы нет, но с точки зрения стандарта его следует указать.
- Конструкция for
- Обычный цикл, по синтаксису аналогичный другим языкам программирования.
- Объявление var i
- Объявление переменной внутри цикла:
i - локальная переменная.
- Функция alert
- Выводит сообщение на экран и ждет, пока посетитель не нажмет ОК
Обычно javascript стараются отделить от собственно документа.
Для этого его помещают внутрь тега HEAD, а в теле страницы по возможности оставляется чистая верстка.
В следующем примере javascript-код только описывает функцию count_rabbits, а ее вызов осуществляется по нажатию на кнопку input.
<html>
<head>
*!*
<script type="text/javascript">
function count_rabbits() {
for(var i=1; i<=3; i++) {
// оператор + соединяет строки
alert("Из шляпы достали "+i+" кролика!")
}
}
</script>
*/!*
</head>
<body>
*!*<input type="button" onclick="count_rabbits()" value="Считать кролей!"/>*/!*
</body>
</html>
Для указания запускаемой по клику функции в input был использован атрибут onclick. Это лишь вершина мощного айсберга javascript-событий.
Обычно javascript-код вообще не пишут в HTML, а подключают отдельный файл со скриптом, вот так:
<script src="/my/script.js"></script>
При этом файл /my/script.js содержит javascript-код, который иначе мог бы находиться внутри тега <script>.
Это очень удобно, потому что один и тот же файл со скриптами можно подключать на разных страницах. При правильных настройках сервера браузер закеширует его и не будет скачивать каждый раз заново.
Чтобы подключить несколько скриптов - используйте несколько таких тегов:
<script src="/js/script1.js"></script>
<script src="/js/script2.js"></script>
...
При указании атрибута src содержимое тега игнорируется.
То есть одновременно подключить внешний файл и написать что-то внутри тега нельзя. Придется делать два разных тега <script>: первый с src, второй - с командами, которые будут выполнены после выполнения внешнего файла.
Современное оформление тэга <script>.
На плохое оформление сейчас ругается только валидатор. Поэтому эту заметку можно не читать.
Однако, знать это полезно хотя бы для того, чтобы сразу отличать современный и профессиональный скрипт от написанного эдак лет 5-6 назад.
- Атрибут
<script type=...>
- По стандарту этот атрибут нужен для указания языка скрипта, но по умолчанию принят javascript, поэтому даже атрибута
type нет - все работает ок. Но валидатор будет ругаться, т.к стандарт требует этот атрибут.
Иногда используют <script type="text/html"> как оригинальный способ добавить неотображаемые данные на страницу. Браузер не исполняет и не показывает <script> с неизвестным типом. В этом плане он ничем не отличается от обычного <div> с вечным style="display:none".
- Атрибут
<script language=...>
- В старых скриптах нередко можно увидеть атрибут
language. Этот атрибут давно мертв и никому не нужен. Не используйте его для javascript.
- Комментарии до и после скрипта
- В старых руководствах по javascript встречается указание "прятать" javascript-код от старых браузеров, заключая его в HTML-комментарии <!-- ... -->.
Браузер, от которого прятали код (старый Netscape), давно умер. Современные браузеры комментарии просто игнорируют. Не ставьте их.
|
Здравствуйте!Запускаю скрипт для подсчета кроликов по кнопке. скрипт в отдельном html, браузер Mozilla FireFox - не работает. в чем дело не подскажете? подддержка JavaScript в браузере включена.
Если Вы имеете в виду, что вы выносите js-код в отдельный файл, то там нужно поставить расширение .js
все работает локально, смотрите у себя недочёты.
Согласен с Zzet
НЕ работает пример с head на локальном компьютере. На сайте если нажать Просмотреть - работает, но если скопировать код и сохранить на локальном компьютере, то ничего не происходит в браузере, появляется только кнопка- жмешь на нее , ничего не происходит
Попробовал. По виду - при копировании и вставке - код вставляется в 1 строчку, это так у вас?
Tikson, ну ёмаё, правильно, ничего не выйдет, потомучто файл с расширением js сохранен на сервере, чтобы код работал у тебя, тебе нужно написать такой файл у себя на компе и прописать к нему путь!!! Ну что тут может быть не понятно???
Конечно нифига на локальном не выйдет. ДЖс - это язык програмирования. Для его выполнения нужна среда. такая же как для кода пхп, т.е. тот же денвер. Олухи блин...
Эм... умнее ничего сказать не мог?
JS - браузерный язык(с)кэп, какая еще среда ему нужна? о_О
И не сравнивай яблоко с апельсином, php - серверный язык программирования (с)Кэп, разницу чуешь?(риторика)
Это не серверный язык, умник.
Смешно Вас слушать, одмын Арсенька!
Среда для js есть у каждого и выбирают ее по своим предпочтениям: хром, лиса, сафари, ие наконец...
Правильно... В Head тег titile является необходимым без него ничего не запашет
товарищ, тег title для вывода названия, если поместить внутрь код, то он только покажется в заголовке и ничего не сработает!
>По виду - при копировании и вставке - код вставляется в 1 строчку, это так у вас?
Не могу найти этому обьяснение, но сегодня этот пример работает...). Причем действия я выполнил все теже, что и впрошлый раз.
В одну строчку код не вставлялся, все нормально вставлялось в мой текстовый редактор.
В любом случае благодарю за помощь.
Тоже самое - с первого раза не сработало, скопированное вставилось в одну строку. Если вставить также как здесь - построчно, то все сработает.
ребят, а вам про кеш никто не рассказывал ?
иди нахуй.
фу! быдло!
Все работает, просто когда вы пишите код в файле .js
такие параметры как:
script type="text/javascript"
учитывать не надо. И писать надо без них. Тогда все работать будет.
Скрипт не работает когда при копировании заносится в одну строчку.
Там комментарии закрывают alert
Ну что вы все ерунду пишите. Одна строчка, коментарии.... что мы здесь все, малыши - элементарных вещей не знаем?
Пример не работает. Почему?
Учебник содержит ошибку:
- ТАК НЕ ПИСАТЬ.
- вот так писать. И все заработает)))
- ТАК НЕ ПИСАТЬ
- ВОТ ТАК ПИСАТЬ
Первый слеш перед my (или js - неважно) лишний.
Читайте про адресацию.
подтверждаю в ФФ 3.5 не работает если первый "/" перед js ставишь
Если вы про кнопку с кроликами то уберите комментарий в коде и всё будет окей.
А у меня все пошло сразу) На стандартных настройкай эксплорера) Поэксперементировал) викинул лишнее добавил свое все работает))) Даже удивился этому))))
Спасибо за отличный учебник!
Скажите можно ли в отдельном файле js писать несколько скриптов?
Если да, то как их разделить в этом файле и как вставлять на страницу
script src="?????.js" ,
или для каждого скрипта нужно создавать отдельный файл?
С уважением Антон.
Чтобы подключить несколько скриптов - используйте несколько тегов:
А как в самом файле js их раздеть?
<script1>Скрипт</script1>
Можно так или нужно иначе?
Извените за мои наивные вопросы!
С уважением Антон.
Вопрос не понял.
src="/js/script2.js" вставляю в HTML файл.
А в отдельном файле со скриптами JS как разделить (задать имя) каждому скрипту, если их несколько? script1, script2 и т д
Я так понимаю, вы имеете ввиду несколько функций в одном файле?
Тогда нет необходимости их как-то разделять. В одном файле может находиться множество различных функций, каждая из которых выполняет свою задачу. Просто подключаете файл js и в html вызываете нужную функцию, на пример так:
из второго примера вызывает функцию count_rabbits()
Во внешнем файле js три текста
document.write("Текст 1");
document.write("Текст 2");
document.write("Текст 3");
Как каждый отдельный текст вставить в HTML файл?
script src="?????????.js" Как им задать имя? Я это спрашиваю.
Помещай каждый текст в отдельную функцию и выводи эту фунцию в любом месте страницы.
А как быть если в одном *.js
две функции и одна вызывает другую?
Пример ниже:
function Login_Sessin(form)
{
if (form.User_Login.value=="1")
{
if (form.User_Password.value=="2")
{
alert("Здравствуй.")
}
else
{
alert("неверный пароль.")
}
}
else
{
alert("Неверный логин.")
}
TEST(form)
}
function TEST
{
alert("Тестовая строка")
}
тестовая строка не выводится. без второй функции работает.
можно ли в отдельном файле js писать несколько скриптов? > можно
для этого можно каждому скрипту назначить свою функцию и потом использовать ее. но для упрощения поиска ошибка лучше если каждый отдельный скрипт висит в своем файле
Скажите пожалуйста, как вывести на страницу, где находится кнопка, информацию: i=1;i=2;i=3, из приведенного кода
function count_rabbits() {
for(var i=1; i=1;i<=3; i++) {
// оператор + соединяет строки
alert("Из шляпы достали "+i+" кролика!")
}
}
Заранее Вам благодарна.
Помогите разобраться. Я делаю как в примере про кроликов с кнопкой для запуска но со своей функцией случайных чисел. у меня не выводится ни чего. вот код проги
<html> <head> <title>Пример 12345 </title> <a href="http://localhost/true/">Назад nhjjkk </a> <script type="text/javascript"> function getRandomInt(x, y) { return Math.floor(Math.random() * (x - y + 1)) + x; } </script> </head> <body> <p> <input type="button" onclick="getRandomInt(0,15)" value="Считать кролей!"/> </form> </body> </html>Ничего не выводится, т.к. отсутствует оператор вывода, например, alert.
А куда его сувать!
function getRandomInt(x, y) { alert(Math.floor(Math.random() * (y - x + 1)) + x); }Вместо возвращения значения (return) - в вашем случае можно сразу вызвать alert.
Я так понимаю, x и y - соответственно левая и правая границы диапазона случайных чисел? В коде уже исправлено.
В твою жопу!
При вставке всего текста скрипта в
function go()
{
}
вызов кнопкой работает.
При в вставке файла с этой функцией в
вызов кнопкой не пашет. Почему?
"браузер читает HTML-страничку" лучше заменить на: "браузер воспроизводит HTML-теги"
Как задать свойства шрифта (цвет, размер и т. д.) при помощи javascript только для этого текста?
document.write("ТЕКСТ");
Используйте HTML:
document.write('<font color="red">TEKST</font>');document.write("ТЕКСТ");
Доброго времени суток
Не могли бы вы уточнить, каким образом писать адрес внешнего скрипта, (объясняю ситуацию: существует html страница и локально в это же папке лежит скрипт)
- это если скрипт лежит в одной папке с html-файлом
Извиняюсь за повторы - не заметил, что не все тэги разрешены....
при открытии карт или удалении писем появляется надпись,что нет сервиса javascript и надо подключить в надстройках браузера. ПОМОГИТЕ ПОЖАЛУЙСТА. я неуверенный пользователь ПК и видно,что-то нахимичила. ПОМОГИТЕ
в браузере инструменты - настройки - включить javascript
вопрос: а если внешних скриптов несколько, то имена всех методов в них должны быть разными? чтобы не было путаницы, какую функцию вызывать по событию, например onclick? или можно как-то явно прописать через имя скрипта?
Сколько бы внешних скриптов не было - объявленные в них функции и переменные находятся в одном глобальном пространстве имен window.
Вопрос: внешний файл .js кроме текста самого скрипта должен еще что-то включать?
Поясню свой вопрос: хочу вынести скрипт в отдельный файл, вырезала текст скрипта из страницы, добавила src, а сам текст вставила в отдельный файл. Что еще в этом файле надо дописать?
Нет, js не должен и не может включать ничего, кроме текста скрипта.
это для чего вначале и в конце в файле скрипта вставляют?
не в файл, а во встроенный в страницу скрипт. чтобы не надо было кодировать спецсимволы (например, писать & вместо &)
а в отдельном файле такая конструкция не нужна, хотя и безвредна.
Только в XHTML. В HTML тег CDATA не рекомендуется
Скажите, пожалуйста, а можно из одного файла script.js обращаться к другому файлу lib.js и использовать функции, описаные в нём?
И ещё:
.
, то при закрытии дочернего окна, и повторном его открытии в ИЕ(6) выскакивает ошибка:
Из родительского окна открывается дочернее(open()
Из дочернего окна происходит обращение к массиву users[], находящимуся в родительском: opener.document.users[](если это имеет значение - каждая ячейка массива содержит объект - получается как бы многомерный массив).
Если происходит просто редактирование значений то всё нормально, а если было добавление новой ячейки(opener.document.users.push()
"Вызываемая сторона(сервер[а не приложение-сервер]) недоступна и исчезла; ни одно бодключение более не действует. Сам вызов не был выполнен".
Мозилла и Опера не капризничают...
Файл lib.js должен быть загружен, тогда его функции станут доступными. Загрузить его можно, добавив в HTML соответствующую строчку <script src="...></script>
Можно также добавить ее через DOM.
А как в скрипте вызвать другой файл скрипта - у меня проверка на наличие скрипта происходит, чтобы не грузить дважды.
function checkjs() {
if (window.hs === undefined) {
alert (window.hs+'Нет такая');
} else {
alert (window.hs+'Есть такая');
}
}
checkjs();
Кстати, спасибо за отличный мануал.
здравствуйте. ничего не знаю о js. объясните пожалуйста, что такое локальная переменная
Переменная, которая существующая только в одной функции
Это отличный учебник для начинающих изучать JavaScript.
Благодарю автора за работу и надеюсь, что в будущем сайт будет только развиваться.
ВОПРОС:
Объясните "i++" в конструкции for и
"+i+" в функции alert
С уважением, Григорий Май
5/I/2010 г.
в конструкции for (и не только там) означает увеличение значения переменной i на 1 и полностью эквивалентно
.
В alert'е +i+ сам по себе был бы бессмысленным (и даже ошибочным, в отличии от i++), т.к. эти операторы принимают 2 аргумента. А вот
уже имеет смысл. Здесь происходит конкатенация (склеивание) 3 строк (при этом все нестроковые переменные принудительно приводятся к строкам). Т.е. сначала будет выполнено
, а потом к результату присоединено
. Это выражение аналогично
('string' + i) + 'more string'Более подробно советую почитать в разделе операторов JavaScript.
'i++' не эквивалентно 'i = i + 1' или 'i += 1', им '++i' эквивалентно
Да и мне тоже.
i++ увеличивает переменную i на единицу
+i+ "склеивает" 3 строки:
1) "Из шляпы достали "
2) i (значение переменной, потому без кавычек)
3) " кролика!"
+i+ "склеивает" 3 строки
Можно по подробней, пожалуйста?
+i как я понял переводит i из числа в строку, а вот зачем второй +?
Что бы прибавить третью строку " кролика!"
аааа валяюсь I = 5 это целая пременная
когда пишут Строка+целая переменная т.е "Строка"+I результатом будет "Строка 5"
Так же как "Строка "+"5" т.е. конкатенация двух строк,
В конструкции for i++ означают увеличение переменной i на единицу.
В конструкции alert +i+ плюсы означают оперцию конкатенации, то есть сложения строк. То есть "текст"+переменная+"текст". То есть чтоб интерпретатор знал, где вставлять текст, а где значение переменной из области памяти.
Уважаемый, Илья!
Простите если задам глупый вопрос, но все же!
На сайте есть несколько счетчиков количества посетителей в каждом из которых используются подключаемые файлы javascript. Возможно ли объединение данных файлов в один файл javascript (с целью уменьшения количества обращений к файлам и уменьшения времени загрузки). Если возможно, то как? Если не возможно, пожалуйста объясните, почему?
Спасибо!
Спасибо! Теперь понятно что означает +i+
При указании атрибута src содержимое тега игнорируется.
- не всегда! При кое - каком обстоятельсве содержимое может исполнятся!
Наткнулся в сети на еще один способ выполнения js при загрузке документа -- механизм подстановок (entity). Вроде
<input value="&{window.location.href};">Я правильно понял, что этот механизм безнадежно устарел и современными браузерами больше не поддерживается?
Этот механизм родился в Netscape давно еще. Он и его аналог в IE (expressions) действительно устарел и не рекомендуется к использованию.
У меня вопрос. В начале кода нужно написать эту строку.У меня никак не запускается в браузере- выдает синтаксическую ошибку. Ведь первая строка- Это адрес? Относительно чего его нужно указывать?
вот эта строка-
очень неудобно, что при выделение текста программы, выделяются номера строк.
возможно ли вынести эти цифры как например тут: http://freshcoder.ru/archives/56
?(не сочтите за рекламу)
Там справа в менюшке появляющейся есть кнопка - нажмите на нее и номера строк исчезнут.
не стоит пользоваться копипастом если вы начинающий, пишите все вручную, это поможет быстрее усвоить синтаксис)
к тому же если автор кода допустил ошибку или опечатку, то при копипасте вы ее явно не саразу заметите или не заметите, и будете долго ломать голову почему скрипт не работает))
Автору огромный СПС))
Все скрипты пашут!
Удивительно, что в некоторых комментарии совсем элементарные вопросы))) неплохой учебник, молодцы=)
доброго времени суток.
подскажите, пожалуйста, почему при объявлении функции в пределах body её вызов из head оканчивается неудачей? спасибо.
Потому что HEAD обрабатывается раньше, чем BODY и про твою функцию в этот момент браузер еще ничего не знает.
Какая последовательность загрузки-исполнения HTML, JS, CSS в браузерах?
А как сделать так что бы – если человек зашёл на сайт и потом взял и хочет подключится javascript
Пожалуйста подскажите
Сформулируй понятней
Спасибо огромное за одну строчку "При указании атрибута src содержимое тега игнорируется"! Так и бы продолжались мучения и вопросы "почему же не работает внешний скрипт???"
Спасибо ещё раз!
> Объясните "i++" в конструкции for и "+i+" в функции alert
>
> С уважением, Григорий Май>
ne razreshajte takie kommenty..
>ne razreshajte takie kommenty..
полностью поддерживаю!
зы ресурс отменный, все в одном месте, красата! спасиба!!!
Здраствуйте. Я скачал один скрипт для сайта. Закинул его в папку Firefox. Далее судя по рекомендации в контекстном меню надо зайти во вкладку "изменить параметры узла", "сценарии", обзор ну и вставить скрипт. Единственная проблема - в контекстном меню у меня нет параметров узла! Перешерстил все настройки, но так и не нашел. Подскажите пожалуйста, где в Firefox параметры узла, либо как этот скрипт вставить по другому. Спасибо.
Такая штука в Опере. В мозилле нету. А зря.
В мозилле для подключения пользовательских скриптов есть расширение Greasemonkey.
Обьясните кто нибудь как мне при редактировани страници поместить или всунуть... большой скрипт в одну строку-окно!??? Для економии места и красоты??? Пример покажите что вырезать и вставить туда скрипт или чем пользоваться в редакторе???
так никто и не написал как правильно оформитььб скрипт во внешнем файле.
все написали, читай камменты
Если еще для вас вопрос актуален, то у меня получилось вот так
В html страницу вроде такого
А в самом файле скрипта пишем без каких либо тегов и комментариев
Пример:function MM_swapImgRestore() { //v3.0
var i,x,a=document.MM_sr; for(i=0;a&&i
спишу дополнить в html странице вот так
только без [strong]
[/strong]
Во внешнем скрипте нужно писать чистый javascript, уже не используя тэги , т.е. только то, что идёт между ними (когда скрипт вставлен прямо в тексте HTML-страницы).
я так и не понял как писать на javascript(((омогите обьясните основы
Уважаемый автор.
Не могу найти примеров и описания работы if.
Мне нужно чтоб в интервале дат, например с 1.05. по 3.06 выводился текст а в остальное время нет. Как это лучше сделать.
ошибка:
поэтому даже ЕСЛИ атрибута type нет - все работает ок.
Я новичок и, судя по всему, не знаю элементарных вещей.
Для всех моих скриптов браузер требует разрешение на исполнение. Как автор этой странички подключил скрипты, что их работа полностью незаметна для пользователя? Не могу найти материал - ни в статьях, ни в поиске, ни в учебниках. Как будто такой проблемы вообще не существует. Буду благодарен, если подскажете.
слушай сюда новичок 8-) я тоже уже конечно не новичок но все же я такой же как и ты... если я тебя правильно понял ты говоришь что в браузере пользователю каждый раз придется нажимать "разрешить" чтоб разрешались использование скриптов да? если так то это можно исправить например:
1 то что ты говоришь происходит не со всеми браузерами а только с иннетЭксплорер или еще каким то браузерами (я не све знаю) но с опера такого нет. а пользователям если они через иннетЭксплорер заходят то надо будет каждый раз подтверждать о разрешении. но если они догадаются в настройках своего браузера поставить галочку "всегда разрешать использование сценариев для данного сайта" то в дальнейшем он может спокойно восхититься твоими сценариями(скриптами в действии)....:-)
надеюсь что я тебя правильно понял если нет то напиши мне в аську 558-444-560
а вот такое разве не используется?
Вопрос такой.
Можно ли подключить js файл со стороннего сервера?
Например где то допустим на ya.ru крутится скрипт test.php внутри которого подключается
Возможно ли такое?
На первый взгляд в целях безопасности, такое должно быть не допустимо, но с другой стороны, ведь я могу свободно скачать любой js скрипт с ресурса javasript.ru...
точно так же как и с картинками - ты можешь в своём блоге указывать URL картинок из ВКонтакта или других сайтов, не закачивая себе на сервер (некоторые сайты блокируют такое "воровство" и вместо картинки ты увидишь картинку "фото недоступно" с логотипом того сайта или что-то подобное).
java-скрипты можно юзать с других сайтов (есть специальные хранилища например cufon-шрифтов, откуда скрипт загрузится гораздо быстрее, чем с посредственного хостинга). Если ты используешь скрипт нелегально - админы его могут изменить или удалить при реконструкции своего сайта и у тебя всё полетит.
А использовать чужие php, в которых идут обращения к БД тебе вряд ли удастся.
не хватает описания атрибута charset в теге script. я использую линукс, а в нем по умолчанию при создании документа идет кодировка utf8, но когда загружается скрипт видимо что то другое, поэтому надо явно указывать.
Если не юзать виндовый блокнот, а нормальные редакторы, то кодировка по-умолчанию тоже utf8, проблем не наблюдал.
Даже так - с utf8 питоновские скрипты нормально отображают кирилицу в виндовой консоли (если декодировать). Если кодировка py-файла ANSI и там есть кирилические строки - то такой скрипт даже не запустится.
Автору огромное спасибо - со второй попытки все получилось!
function count_rabbits() {
for(var i=1; i<=3; i++) {
// оператор + соединяет строки
alert("Из шляпы достАААли "+i+" кролика!")
}
}
Именно так должен выглядеть отдельный файл со скриптом! (а разместить его удобно создав через ftp отдельную папку,)
Подскажите плиз. можно ли сделать в яваскрипт, как в CSS несколько файлов стилей в один включить? В CSS это так: @import url("style.css");
вот тоже самое тока несколько файлов яваскриптов в один подключить?
Что означает text/ в script type="text/javascript"?
атрибут type указывает MIME-тип содержимого контейнера. MIME-типы говорят браузерам как обращаться с конкретными расширениями.
А text говорит о том, что это... текст))
бывают еще и application, video, audio...
подскажите пожалуйста начинающему. код javascript выполняется между тегами
//код скрипта
однако во втором примере вызов функции в теле HTML документа происходит ниже закрытвающего тега javascript. Сделать пример получилось и все работает, спасибо, но хотелось бы узнать, почему это так. спасибо заранее
Внутри ... функция только определена, а ниже она используется как уже известная.
как и где подключится Java Script?
У меня проблема, помогите, что делать незнаю
скачал и установил два срипта, вот так:
Главная
Но работает только один (нижний), что делать незнаю, менял местами работает только нижний, извращался как только можно и нелзя неполучается. ПОМОГИТЕ!!!!!!!!
Два файла в одной папке - Lesson1.html и script.js.
Содержимое файла Lesson1.html:
-------------------------------------------
// конечно вместо [] уменя <>, просто не знаю как здесь заставить отображаться.
Содержимое файла script.js:
---------------------------------------------
function count_rabbits() {
for(var i=1; i<=3; i++) {
// оператор + соединяет строки
alert("Из шляпы достАААли "+i+" кролика!")
}
}
---------------------------------------------
При открытии браузером файла Lesson1.html кнопка корректно отображается, но но при клике по ней ничего не происходит...
ВОПРОС - почему не выполняется скрипт, где ошибка?
Смотрите, что говорит консоль ошибок.
Ошибка: count_rabbits is not defined
Источник: file:///C:/Users/123/Desktop/%D0%9D%D0%BE%D0%B2%D0%B0%D1%8F%20%D0%BF%D0%B0%D0%BF%D0%BA%D0%B0%20(2)/%D0%9D%D0%BE%D0%B2%D0%B0%D1%8F%20%D0%BF%D0%B0%D0%BF%D0%BA%D0%B0/Lesson1.html
Строка: 1
Вот здесь я уже ничего не понимаю, могу предположить что имя функции не верно записано, так нет же, все правильно... Что еще???
Поскольку оба файла в одной папке, то должно быть так: src="script.js"
Сорри, форум вставляет лишнюю папку в путь (/forum/). Поэтому напишу кириллицей: должно быть так: срц="скрипт.js" (без папки /forum/).
проверьте, подключается ли у вас файл script.js...
функция ваше не определена... проверьте, подключается ли у вас файл script.js...
Вы уж простите, но как это сделать?
если браузер хром или файрфокс, то щелчок правой кнопкой - просмотр исходного кода...
там пути отображаются как ссылки, щелкаете по ссылке с вашим js, если открывается, то ищем причины дальше, нет - так прописываем верный путь до js
Сделал все выше сказанное. Адрес тот, что я указал в коде файла "Lesson1" - /forum/script.js. Кликая по нему при просмотре исходного кода ничего не открывается. Следовательно неверный путь. Но файлы в одной папке и адрес прописан точно как здесь объяснили.
Спасибо, проблема решена.
Стоило лишь верно прописать путь. В моем случае это было:
src="/script.js". Так писать не верно, нужно без /. Вот так - src="script.js".
Я так и не понял откуда у Вас взялся вот этот вид src="/forum/script.js", что за /forum? Может это конечно и правильная запись с точки зрения чего-то там, но новичка это только заставляет поломать мозг пару часов.
Ух ты. Парни что-то здесь ни так в коде отображения постов. В сообщении выше, в третьей строке последнее предложение, вот этого /forum быть не должно. Подставляется автоматом, это и заставило меня пол ночи не спать
в комментарии к первому примеру написано:
"Объявление var i
Объявление переменной внутри цикла: i - локальная переменная."
а в справочнике где цикл for про ту же переменную:
"initial-expression
Выражение (включая присваивание) или объявление переменной. Как правило, используется для инициализации переменной-счетчика. Это условие может объявлять новую переменную при помощи var. Такая переменная не является локальной переменной цикла, она видна во всей области видимости."
так локальная она или глобальная в JS? спасибо.
...или здесь надо говорить не "глобальный", а "видимый за пределами блока". Хотя и это не вариант, если в JS видимость задается функцией, а не блоком...
Да, как Вы верно заметили, область видимости в JS задается только функцией. Это значит, что переменная, объявленная в for(var ...) будет локальной для текущей области видимости. Т.е. будет доступна всюду внутри функции или, если мы вне функции (т.е. в глобальной области), то переменная соответственно станет глобальной.
В отличие от, например, Си, где область видимости задается блоком и переменная, объявленная в for(...) будет видна только внутри тела цикла.
Могут ли функции объявденные во внешнем файле работать с глобальными переменными?
То есть у меня в HTML-страницу встроены скрипты.При переносе их во внешний файл и подключении функции не работают.Попросту не видят глобальных переменных,объявленных во встроенных скриптах на html-страницах.
Есть ли выход?Может тогда весь javascript засунуть(вместе с объявление глобальных переменных)?Это будет очень неудобно...
От души посмеялся над выражением "Браузер, от которого прятали код (старый Netscape), давно умер." )
Netscape слабо поддерживал javascript, css и даже css. Разработчики больше внимания уделяли различным дополнениям к браузеру и его функционалу, чем совместимости.
Из-за этого в 1998 году они перестали прятать код(этим самым сделав проект бесплатным) в надежде, что им помогут улучшить совместимость. Но этого не произошло.
Позже AOL(компания разработчиков) забросила проект "Netscape" и занялась разработкой браузера "Firefox".
Если бы AOL не прятали код сразу, то скорее всего собрали бы большую группу энтузиастов и проблема совместимости решилась.
Как видим ты от души посмеялся только над своим незнанием.
Netscape слабо поддерживал javascript, css и даже html. *
Спасибо за отличный учебник!
Подскажите как сделать так, что бы при нажатии на ссылку запускался следующий скрипт:
var newWin = window.open('test.php','JSSite', 'width=600,height=500,resizable=yes,scrollbars=no,status=yes,toolbar=no')
newWin.focus()
Никак не пойму, куда это присандалить. Может и через ссылку это нельзя реализовать, тогда как??
код с window.open... и т.д. засунуть в функцию, скажем, openNewWin()
В ссыдке прописать: Нажми сюда Но такой способ не рекомендуется. Или вот так Нажми сюда
Прошу помочь. Уже третий день не могу решить проблему. Мне нужно вставить в javascript еще один javascript. Подскажите, каким образом это возможно сделать?
Подсчет кролей выдает такую ошибку
missing ; before statement
[Прерывать на этой ошибке] 05 function count_rabbits() {
что тут не так не пойму???
+ ко всему свежие комментарии аж в самом низу, кто их прочитает, тем более ответит на них???
спс
Цифры 05, 04, 03 и т.д. убери.
перечитал весь блог, довольно неплохо
с предыдущей проблемкой сам разобрался)) но хочу оставить пожелание, ввиду того что никто не отвечал на вопрос) 2 дня, новые посты отображать вверху, а не внизу, и(или) набрать пару модеров пусть отвечают...
Считаю, что такой способ управления поможет большему количеству новичков, таким как я...
А как подсчитать в обратном количестве? Например:
1) из шляпы достали 6 кроликов
2) из шляпы достали 5 кроликов
...............................................
n) из шляпы достали n кроликов
for (var i=3; i>=1; i--) { alert("Из шляпы достали "+i+" кролика!") }Отправить комментарий
Приветствуются комментарии:- Полезные.
- Дополняющие прочитанное.
- Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.Для остальных вопросов и обсуждений есть форум.