javascript - 理解 JS Event 和 handler 背后的逻辑
问题描述
下面是我编写的用于验证名字和姓氏的 JS/Html 代码。当该字段留空时,它将显示红色,当该字段未留空时,它将显示绿色。
现在,有人可以帮我理解这行代码背后的逻辑吗?
var control = document.getElementById(controlID);
这是完整的程序...
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
function validateRequiredFields(controlID) {
var control = document.getElementById(controlID); //Why are we assigning this to a variable ? what is happening at this code.
control.style.color = 'white';
if (control.value == "") {
control.style.background = 'red';
} else {
control.style.background = 'green';
}
}
</script>
</head>
<body>
<p> Below is the First Name and Last Name Validation Example. </br>
1. When the field is blank, it will show red color.</br>
2. When the field is not blank, it wil show green color.</br>
</p>
<table>
<tr>
<td>
First name
</td>
<td>
<input type="text" id="txtFirstName" onkeyup="validateRequiredFields('txtFirstName')"
onblur="validateRequiredFields('txtFirstName')">
</td>
</tr>
<tr>
<td>
Last Name
</td>
<td>
<input type="text" id="txtLastName" onkeyup="validateRequiredFields('txtLastName')"
onblur="validateRequiredFields('txtLastName')">
</td>
</tr>
</table>
</body>
</html>
解决方案
在这样做时,var control = document.getElementById(controlID);
您将 DOM 节点的 ID 发送到函数并获取 DOM 节点的引用并将其读入另一个变量,这样您就不需要调用document.getElementById(controlID)
;多次,因为这是昂贵的操作 -</p>
推荐阅读
- blazor-server-side - Blazor 服务器 - 加载缓慢或无响应,但仍在浏览器上加载(部署到 Windows Server 2016。IIS8)
- docker - Dockerfile 返回一个非零代码:3221225781
- vue.js - (Vue) beforeRouteUpdate 与异步/等待?
- java - 如何每隔一天自动获取 Unix 时间戳?
- flutter - 是否可以使溢出的图像部分在颤动中不可见?
- flutter - 当添加另一个可拖动小部件时,如何防止堆栈中的可拖动小部件(使用 Matrix4 Transform 创建)改变它们的位置?
- python - 如何使它不会多次迭代列表中的同一个字典?
- snowflake-cloud-data-platform - 聚类键是否会影响雪花中的负载性能
- python - 如何使用 Pandas 可视化一系列时间戳?
- visual-studio - 如何从 Visual Studio 2019 中的文本编辑器运行单元测试?