Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.05.2018, 10:57
Интересующийся
Отправить личное сообщение для АндрейD Посмотреть профиль Найти все сообщения от АндрейD
 
Регистрация: 21.05.2018
Сообщений: 14

работа с событиями - не срабатывает 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);
}

Последний раз редактировалось АндрейD, 22.05.2018 в 11:42.
Ответить с цитированием
  #2 (permalink)  
Старый 22.05.2018, 11:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 25,039

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

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


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #3 (permalink)  
Старый 22.05.2018, 11:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 25,039

Сообщение от АндрейD
Что не правильно в коде?
или добавьте атрибут name или сделайте поиск по тегу getElementsByTagName
Ответить с цитированием
  #4 (permalink)  
Старый 22.05.2018, 11:45
Интересующийся
Отправить личное сообщение для АндрейD Посмотреть профиль Найти все сообщения от АндрейD
 
Регистрация: 21.05.2018
Сообщений: 14

Спасибо за советы, всё поправил, но результата нет. Не понял на счёт " поиск по тегу". Кроме того, что я указал - ничего в коде нет.
Ответить с цитированием
  #5 (permalink)  
Старый 22.05.2018, 12:23
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 25,039

Андрей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>
Ответить с цитированием
  #6 (permalink)  
Старый 22.05.2018, 13:34
Интересующийся
Отправить личное сообщение для АндрейD Посмотреть профиль Найти все сообщения от АндрейD
 
Регистрация: 21.05.2018
Сообщений: 14

Да, спасибо, работает. Но вот смотрите - сейчас заново всё написал, но в 2-х файлах html и js - в браузере появились кнопки, нажимаются, но alert нет. Сразу вырезаю код из js, вставляю его в html и всё включается, как по маслу! Буду Вам, очень признателен, если укажете мне причину несрабатывания из отдельного файла.
Ответить с цитированием
  #7 (permalink)  
Старый 22.05.2018, 13:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 25,039

АндрейD,
либо что-то с кодировкой файла, либо неправильно указан путь к файлу, либо тег script у вас не там, гадать бестолку, смотрите, что пишет консоль.
Ответить с цитированием
  #8 (permalink)  
Старый 22.05.2018, 16:07
Интересующийся
Отправить личное сообщение для АндрейD Посмотреть профиль Найти все сообщения от АндрейD
 
Регистрация: 21.05.2018
Сообщений: 14

Дело в том, что всё прочее в этом файле работает. Проблема возникла именно в приведённом примере. В любом случае спасибо Вам, теперь есть возможность (хотя бы таким способом) двигаться дальше.
Ответить с цитированием
  #9 (permalink)  
Старый 27.05.2018, 23:09
Интересующийся
Отправить личное сообщение для АндрейD Посмотреть профиль Найти все сообщения от АндрейD
 
Регистрация: 21.05.2018
Сообщений: 14

Сообщение от рони Посмотреть сообщение
,
либо что-то с кодировкой файла, либо неправильно указан путь к файлу, либо тег script у вас не там, гадать бестолку, смотрите, что пишет консоль.
Поделюсь с Вами, находкой решения этой проблемы, т.к. вы не оставались равнодушны к моим вопросам.

Итак, ответ я нашёл в книге "Шаблоны JS". Оказывается размещать ссылку (типа <script src="js/file_js.js"></script>) на прикреплённый файл js в <head> - это худший антишаблон! Правильнее всего прописывать её в конце страницы, перед закрывающим тегом </body>. Я это сделал и всё заработало!
Ответить с цитированием
  #10 (permalink)  
Старый 27.05.2018, 23:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 25,039

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таймер срабатывает раньше времени или вообще не срабатывает Terebonko Элементы интерфейса 6 03.08.2017 13:43
alert срабатывает раньше Bird17 Events/DOM/Window 2 31.05.2017 20:47
Безопасность клиентского кода. BallsShaped Общие вопросы Javascript 35 29.10.2012 16:20
Почему alert не срабатывает для несуществующей переменной? Почемучкин Общие вопросы Javascript 10 16.08.2012 09:32
Некорректная работа скрипта в разных браузерах en-k Общие вопросы Javascript 2 15.03.2011 14:54