Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   работа с событиями - не срабатывает alert (https://javascript.ru/forum/events/73852-rabota-s-sobytiyami-ne-srabatyvaet-alert.html)

АндрейD 22.05.2018 09:57

работа с событиями - не срабатывает alert
 
Что не правильно в коде? Почему alert не работает?
Файл html:

<div>
<input type="submit" value="1" name="butt"> 
	<input type="submit" value="2" name="butt">
	<input type="submit" value="3" name="butt">

</div>


Файл js:
var elems = document.getElementsByTagName('input');
for (var i = 0; i < elems.length; i++) {
	elems[i].onclick = func;
}
function func() {
	alert(this.value);
}

рони 22.05.2018 10:24

АндрейD,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

рони 22.05.2018 10:30

Цитата:

Сообщение от АндрейD
Что не правильно в коде?

или добавьте атрибут name или сделайте поиск по тегу getElementsByTagName

АндрейD 22.05.2018 10:45

Спасибо за советы, всё поправил, но результата нет. Не понял на счёт " поиск по тегу". Кроме того, что я указал - ничего в коде нет.

рони 22.05.2018 11:23

АндрейD,
код ниже здесь, у вас работает?
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
<div>
 <input type="submit" value="1">
 <input type="submit" value="2">
 <input type="submit" value="3">
 </div>


 <script>
 var elems = document.getElementsByTagName('input');
 for (var i = 0; i < elems.length; i++) {
 elems[i].onclick = func;
 }
 function func() {
 alert(this.value);
 }

</script>
</body>
</html>

АндрейD 22.05.2018 12:34

Да, спасибо, работает. Но вот смотрите - сейчас заново всё написал, но в 2-х файлах html и js - в браузере появились кнопки, нажимаются, но alert нет. Сразу вырезаю код из js, вставляю его в html и всё включается, как по маслу! Буду Вам, очень признателен, если укажете мне причину несрабатывания из отдельного файла.

рони 22.05.2018 12:52

АндрейD,
либо что-то с кодировкой файла, либо неправильно указан путь к файлу, либо тег script у вас не там, гадать бестолку, смотрите, что пишет консоль.

АндрейD 22.05.2018 15:07

Дело в том, что всё прочее в этом файле работает. Проблема возникла именно в приведённом примере. В любом случае спасибо Вам, теперь есть возможность (хотя бы таким способом) двигаться дальше.

АндрейD 27.05.2018 22:09

Цитата:

Сообщение от рони (Сообщение 485789)
,
либо что-то с кодировкой файла, либо неправильно указан путь к файлу, либо тег script у вас не там, гадать бестолку, смотрите, что пишет консоль.

Поделюсь с Вами, находкой решения этой проблемы, т.к. вы не оставались равнодушны к моим вопросам.

Итак, ответ я нашёл в книге "Шаблоны JS". Оказывается размещать ссылку (типа <script src="js/file_js.js"></script>) на прикреплённый файл js в <head> - это худший антишаблон! Правильнее всего прописывать её в конце страницы, перед закрывающим тегом </body>. Я это сделал и всё заработало!

рони 27.05.2018 22:33

АндрейD,
правильный ответ: элемента на момент запуска скрипта нет.
решение: domcontentloaded
и ставьте спокойно загрузку скрипта с domcontentloaded в любое место, про антишаблон читайте, но без интузиазма. :)


Часовой пояс GMT +3, время: 14:52.