JavaScript实现简易ATM存取款功能教程
作者:流萤时间:2026-10-22 20:47:09浏览:466
本文通过JavaScript实现简易ATM机存取款功能,涵盖登录界面与主页面的DOM操作。重点解析卡号密码验证、三次错误锁定机制、余额校验及存取款逻辑,帮助开发者掌握前端交互与状态管理的实战技巧。
JavaScript实现简易ATM存取款功能教程
JavaScript作为一种功能强大的脚本语言,能够构建多种有趣的演示程序。在开发界面炫酷、特效精美的应用时,DOM操作是不可或缺且至关重要的环节。本ATM机存取款案例,正是利用JavaScript中基础的DOM操作来达成其功能目标。
功能需求分析
ATM机案例的功能需求如下:
1. 用户最多仅有三次输入卡号和密码的机会,若超过三次,系统将提示卡号已被锁定。\n2. 用户取款的金额不得超过账户当前的余额。\n3. 完成存取款操作后,需同步更新并显示相应的余额信息。
登录界面的HTML结构代码如下:
登录界面实现
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ATM</title>
<script src="ATM.js"></script>
<style>
div{
width: 300px;
height: 200px;
margin: 0 auto;
border:1px solid black;
border-radius: 5px;
text-align: center;
}
p {
font-size: 20px;
}
button {
border: 0px;
padding: 5px;
background-color: green;
color: white;
}
</style>
</head>
<body>
<div>
<p>ATM机</p>
<p><label>卡号:</label><input type="text" id="account"></p>
<p><label>密码:</label><input type="password" id="password"></p>
<p><button onclick="login()">登录</button></p>
</div>
</body>
</html>
主功能页面的HTML结构代码如下:
主页面与交互逻辑
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ATM</title>
<script src="ATM.js"></script>
<style>
div{
width: 300px;
height: 200px;
margin: 0 auto;
border:1px solid black;
border-radius: 5px;
text-align: center;
}
p {
font-size: 20px;
}
button {
border: 0px;
padding: 5px;
background-color: green;
color: white;
}
</style>
</head>
<body>
<div>
<p>ATM机</p>
<p><label>余额:</label><input type="text" id="balance" value="2000.00" disabled></p>
<p><label>存款:</label><input type="text" id="deposit"> <button onclick="deposit()">存款</button></p>
<p><label>取款:</label><input type="text" id="withdraw"> <button onclick="withdraw()">取款</button></p>
</div>
</body>
</html>
核心JavaScript逻辑代码实现如下:
核心代码解析
var i = 2; //定义密码输错的次数
//判断输入的卡号是不是数字类型
//返回true,证明不是数字;返回false,证明是数字
function checkNumber(account){
var pattern=/^[0-9]*[1-9][0-9]*$/;
return pattern.test(account);
// return isNaN(account);
}
//判断输入的卡号和密码是否为空
function checkNull(account,password){
if(account.length>0 && password.length>0){
return true;
}
return false;
}
//登录事件
function login(){
var account=document.getElementById("account").value;
var password=document.getElementById("password").value;
if(!checkNull(account,password)){
alert("卡号和密码不能为空!");
return; //终止登录方法,下面的代码不会执行
}
if(!checkNumber(account)){
alert("卡号必须为数字!");
return;
}
if(i>0 && account=="123456789" && password=="123"){
window.location.href="index.html" rel="external nofollow" ;
}else{
if(i == 0){
alert("当前卡号被锁定!");
return;
}
alert("你还剩下"+i+"次输入卡号和密码的机会");
i--;
return;
}
}
//存款
function deposit(){
var balance = parseFloat(document.getElementById("balance").value); //获取余额,并将其转换为数字
var deposit = document.getElementById("deposit").value;
if(!deposit.length>0){
alert("请输入您要存款的金额");
return;
}
if(checkNumber(deposit)){
alert("请输入数字");
return;
}
balance+=parseFloat(deposit);
document.getElementById("balance").value=balance; //修改存款完成以后显示的余额
}
//取款
function withdraw(){
var balance = parseFloat(document.getElementById("balance").value); //获取余额,并将其转换为数字
var withdraw = document.getElementById("withdraw").value;
if(!withdraw.length>0){
alert("请输入您要取款的金额");
return;
}
if(checkNumber(withdraw)){
alert("请输入数字");
return;
}
//判断取款是否大于余额
if(parseFloat(withdraw)>balance){
alert("余额不足!");
}
balance-=parseFloat(withdraw);
document.getElementById("balance").value=balance;
}
程序运行时的界面效果展示如下:




以上就是本文的全部内容,希望能为读者的学习提供有益的帮助,同时也欢迎大家继续支持本站。
作者最新文章
JavaScript将图片转换为Base64编码的两种途径
2026-11-05 16:43:05
怎么在 Vue 或 React 项目中正确集成 animate.js
2026-11-05 10:23:38
JS注册事件:addEventListener基础语法与参数详解
2026-11-05 08:44:56
JSP和JS的区别:运行环境与服务端/客户端职责解析
2026-11-04 23:34:36
pdf.js 官方下载地址:GitHub Release 获取预编译包
2026-11-04 23:07:27
