Ваш код имел 2 проблемы с ним.Один - scope
, а другой - value
.
let txtName
Поскольку variable
инициируется с использованием let
, его scope
ограничено, а не global
.Используйте var
, чтобы сделать его глобальным, чтобы он мог получить доступ и внутри functions
.
let txtName = document.querySelector('#txtName');
Эта строка кода запускается сразу после загрузки страницы.Таким образом, ему присваивается входной объект при загрузке страницы (, а не значение ).Для печати имени, хотя нам нужно значение этого объекта (, которое является второй точкой ), а не сам объект.Мы обращаемся к его значению с помощью .value
.
var txtName = document.querySelector('#txtName').value;
Определите эту строку внутри вызываемой функции, иначе она получит значение null
, потому что оно запустится, как только страница загрузится, и значение null
будет назначен, потому что внутри поля ввода нет input
.
function sayHello() {
var txtName = document.querySelector('#txtName').value;
document.write("Hello, " + txtName + "!");
}
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Greeter</title>
</head>
<body>
<script src="app.js"></script>
<input id = "txtName" placeholder="Your Name"/>
<button onclick="sayHello()"> Say Hello </button>
</body>
</html>