22.05.2018, 09:57
|
Интересующийся
|
|
Регистрация: 21.05.2018
Сообщений: 27
|
|
работа с событиями - не срабатывает 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 в 10:42.
|
|
22.05.2018, 10:24
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,134
|
|
АндрейD,
Пожалуйста, отформатируйте свой код!
Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]
О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
|
|
22.05.2018, 10:30
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,134
|
|
Сообщение от АндрейD
|
Что не правильно в коде?
|
или добавьте атрибут name или сделайте поиск по тегу getElementsBy TagName
|
|
22.05.2018, 10:45
|
Интересующийся
|
|
Регистрация: 21.05.2018
Сообщений: 27
|
|
Спасибо за советы, всё поправил, но результата нет. Не понял на счёт " поиск по тегу". Кроме того, что я указал - ничего в коде нет.
|
|
22.05.2018, 11:23
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,134
|
|
Андрей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>
|
|
22.05.2018, 12:34
|
Интересующийся
|
|
Регистрация: 21.05.2018
Сообщений: 27
|
|
Да, спасибо, работает. Но вот смотрите - сейчас заново всё написал, но в 2-х файлах html и js - в браузере появились кнопки, нажимаются, но alert нет. Сразу вырезаю код из js, вставляю его в html и всё включается, как по маслу! Буду Вам, очень признателен, если укажете мне причину несрабатывания из отдельного файла.
|
|
22.05.2018, 12:52
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,134
|
|
АндрейD,
либо что-то с кодировкой файла, либо неправильно указан путь к файлу, либо тег script у вас не там, гадать бестолку, смотрите, что пишет консоль.
|
|
22.05.2018, 15:07
|
Интересующийся
|
|
Регистрация: 21.05.2018
Сообщений: 27
|
|
Дело в том, что всё прочее в этом файле работает. Проблема возникла именно в приведённом примере. В любом случае спасибо Вам, теперь есть возможность (хотя бы таким способом) двигаться дальше.
|
|
27.05.2018, 22:09
|
Интересующийся
|
|
Регистрация: 21.05.2018
Сообщений: 27
|
|
Сообщение от рони
|
,
либо что-то с кодировкой файла, либо неправильно указан путь к файлу, либо тег script у вас не там, гадать бестолку, смотрите, что пишет консоль.
|
Поделюсь с Вами, находкой решения этой проблемы, т.к. вы не оставались равнодушны к моим вопросам.
Итак, ответ я нашёл в книге "Шаблоны JS". Оказывается размещать ссылку (типа <script src="js/file_js.js"></script>) на прикреплённый файл js в <head> - это худший антишаблон! Правильнее всего прописывать её в конце страницы, перед закрывающим тегом </body>. Я это сделал и всё заработало!
|
|
27.05.2018, 22:33
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,134
|
|
АндрейD,
правильный ответ: элемента на момент запуска скрипта нет.
решение: domcontentloaded
и ставьте спокойно загрузку скрипта с domcontentloaded в любое место, про антишаблон читайте, но без интузиазма.
|
|
|
|