javascript - 获取输入并将其输出到 HTML 文件时出现问题
问题描述
尝试编写一个 JS/HTML 程序,将用户名作为输入并输出“Hello,[Name]!” 当你点击他按钮时。
HTML:
<!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>
JS:
let txtName = document.querySelector('#txtName');
//let name = "lauren";
function sayHello() {
document.write("Hello, " + txtName + "!");
}
当我尝试运行它时,它会输出“Hello,null!” 每次。
解决方案
您的代码有 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>
推荐阅读
- node.js - _id 子文档 VS 新集合中的对象 id
- python - 分配 Keras 张量的索引条目
- php - 将新字段附加到现有数组
- python-2.7 - 如何使用文件夹父ID直接将文件上传到指定文件夹
- rapidjson - 如何将成员添加到值为NULL的rapidjson?
- java - 从 SharedPreferences 检索值时,无法将获取 java.lang.String 转换为 java.lang.Integer
- java - 给定链表中的特定节点时如何使用 insertAfter()
- bootstrap-4 - 如何在没有滚动条的小屏幕(Bootstrap4)上调整/缩放表格?
- c# - 根据现有属性的值编辑新属性并将其插入 XML 文件
- sql - 更新列中的值,但创建重复项时除外