Javascript.RU

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

Сообщение от j0hnik Посмотреть сообщение
АндрейD,

<input type="submit" value="1" id="a">
<script>
var a = document.getElementById('a');
a.onclick = go;
function go() {
 alert(a.getAttribute('value'));
}
</script>


может не в этом куске кода дело?
Больше ничего нет, это задача. 1-я строка - это html страница, а <script> - прикреплённый файл js. Причём, если вызываю функцию onclick="go()" из html файла, вот так:

<input type="submit" value="1" onclick="go()" id="a">

а в js файл ставлю ту же строку:

function go() {
var elem = document.getElementById('a');
alert(a.getAttribute('value'));
}
то всё прекрасно работает. Но вызов

var a = document.getElementById('a');
a.onclick = go;

никак не идёт.
Ответить с цитированием
  #12 (permalink)  
Старый 22.05.2018, 09:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

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

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

Вот пробую, alert показывает, что переменная "a" null. Что то странно.
var a = document.getElementById('a');
alert(a);
Ответить с цитированием
  #15 (permalink)  
Старый 22.05.2018, 10:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от АндрейD
а в js файл ставлю ту же строку:

function go() {
var elem = document.getElementById('a');
alert(a.getAttribute('value'));
}
alert(elem.getAttribute('value'));
Ответить с цитированием
  #16 (permalink)  
Старый 22.05.2018, 10:59
Интересующийся
Отправить личное сообщение для АндрейD Посмотреть профиль Найти все сообщения от АндрейD
 
Регистрация: 21.05.2018
Сообщений: 27

Извините за опечатку в приведённом примере - писал его тут по памяти. Вот из редактора:
<input type="submit" value="1" id="a">


var a = document.getElementById('a');
a.onclick = go;
function go() {
alert(a.getAttribute('value'));
}
Ответить с цитированием
  #17 (permalink)  
Старый 22.05.2018, 11:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

АндрейD,
работает?
<!DOCTYPE html>

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

<body>
<input type="submit" value="1" id="a">


 <script>
 var a = document.getElementById('a');
a.onclick = go;
function go() {
alert(a.getAttribute('value'));
}


</script>
</body>
</html>
Ответить с цитированием
  #18 (permalink)  
Старый 22.05.2018, 12:14
Интересующийся
Отправить личное сообщение для АндрейD Посмотреть профиль Найти все сообщения от АндрейD
 
Регистрация: 21.05.2018
Сообщений: 27

Да, работает. Ничего не понимаю - сейчас тоже скопировал свой код из js файла в html и заработало. В чём тогда причина? Уж и 'use strict' удалил. Спасибо за помощь! Вот если бы ещё разобраться - почему из отдельного файла не получается.
Ответить с цитированием
  #19 (permalink)  
Старый 27.05.2018, 22:12
Интересующийся
Отправить личное сообщение для АндрейD Посмотреть профиль Найти все сообщения от АндрейD
 
Регистрация: 21.05.2018
Сообщений: 27

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

Про "антишаблон" - цитата из книги, написанной экспертом по языку JavaScript Стояном Стефановым – ведущим специалистом компании Yahoo! и создателем инструмента оптимизации производительности веб-страниц YSlow 2.0.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает scroll, click работает laaf Общие вопросы Javascript 21 08.03.2015 20:05
trigger click не работает Mukhtar Общие вопросы Javascript 10 14.11.2013 17:06
Объясните, почему функция работает именно так. Имя Общие вопросы Javascript 36 04.09.2012 17:30
click событие не реагирует на вновь добавленный элемент vladimircape Events/DOM/Window 2 23.08.2012 00:05
Не работает код в ие. Событие click. Marv jQuery 2 13.02.2012 13:49