纯前端实现一个密码本H5App

纯前端实现一个密码本H5App。

开发工具:Hbuilder X
开发语言:HTML、CSS、JavaScript

项目需求:一个纯前端的密码本App,需要实现完整的增删改查操作。页面主页(index.html)实现一个三段式的布局,期间分别为“银行卡、工作账号、游戏账号”三大类,每个类别点击进入后呈现出一个流式布局的按钮,每个按钮对应自己的账号。
点击跳转后,进入密码查看阶段。密码查看的页面统一使用一个文件,因为整套系统中是一个动态网页的状态,所以查看的页面只是将内容进行更改,不涉及页面其他地方的修改。

项目开发使用技术:由于项目采用的是与传统的动态网页相同的设计结构,但是只是采用纯前端进行操作,所以这里的数据库使用“localStorage”作为数据库使用。
(这里需要注意的是:使用localStorage作为数据库存储数据,虽然不指定就不进行覆盖,但是该种方式存储仍存在很大的弊端,其中最大的问题就在于“不能进行大数据的存储,数据存储的上线在5M左右”)
网页之间的数据交换采用的是URL传值的方式,也就是“www.baidu.com”+“?数据~”的方式进行传输,其余地方与传统的MVC模式下的Java Web实现动态网页并没有不同。

项目的具体实现过程
index
主页呈现这种状态,但是并没有什么特别的技术难点,主要就是HTML+CSS的小动画效果。文字阴影使用:text-shawod方法
bank
点击进入bank.html页面后,上方的红色1框内为写死的测试数据,后期匆忙没有删除,下方的蓝色2框内为遍历localStorage生成的数据。
这里的localStorage使用的是key-value的存储方式,所以这里的存储获取我采用的是添加过程中整段拼接并且在显示页面采用slice() 方法切割的方式。
localStorage

var storage = window.localStorage;

var addBank_a = document.getElementById("addbank_a");

var keyName = null,
	keyName1 = null,
	valueName = null,
	bankName = null;

//初始化函数
function initBank(){
	for(var i=0; i < storage.length; i++){
//这里获取的是key
		keyName1 = storage.key(i);
//这里切割key,拿到key前面的显示项
		keyName = keyName1.slice(0, 1);
		console.log("这里是key"+keyName1);
//只有显示项为B的才能显示为列表,判断为J和G的在剩余两大类中显示
		if(keyName == "B"){
//获取value,并且切割value,最前段为银行代号
			valueName = storage.getItem(storage.key(i)).slice(0, 2);
			bankName = switchBank(valueName);
			console.log(bankName);
			bankImg = switchBankImg(valueName);
			console.log(bankImg);
			
			creatBankMenu(keyName1, bankName, bankImg);
		}
	}
}

//循环函数
function switchBank(bankNumber){
	var numberBank = bankNumber;
	switch(numberBank){
		case "01":
			return "中国银行";
			break;
		case "02":
			return "建设银行"
			break;
		case "03":
			return "工商银行";
			break;
	}
}
function switchBankImg(bankNumber){
	var numberBank = bankNumber;
	switch(numberBank){
		case "01":
			return "../img/bank/chinaBank.jpg";
			break;
		case "02":
			return "../img/bank/jianshe.jpg";
			break;
		case "03":
			return "../img/bank/gongshang.jpg";
			break;
	}
}

function creatBankMenu(keyName1, bankName, bankImg){
	//创建主体
	var a_div = document.createElement("a");  //创建a标签
	a_div.setAttribute("class", "bank_div");
	document.body.insertBefore(a_div, addBank_a.previousSibling);
	var img_div = document.createElement("img");  //创建img标签
	img_div.setAttribute("class", "bank_img");
	a_div.appendChild(img_div);
	var p_div = document.createElement("p");   //创建p标签
	p_div.setAttribute("class", "bankName");
	a_div.appendChild(p_div);
	
	var keyName = "../view/viewBank.html?"+keyName1;
	
	//添加a标签的href属性
	// var last_href_number = document.getElementsByClassName("bank_div");
	// var div_a_href = last_href_number[last_href_number.length - 1];
	a_div.setAttribute("href", keyName);
	
	//添加img标签的src属性
	// var last_a_number = document.getElementsByClassName("bank_img");
	// var img_src = last_a_number[last_a_number.length - 1];
	img_div.setAttribute("src", bankImg);
	
	//改变p标签的内容
	// var last_p_text = document.getElementsByClassName("bankName");
	// var p_text = last_p_text[last_p_text.length - 1];
	p_div.innerText = bankName;
}

initBank();

view
点击进入具体的页面后,页面的全部元素都是写死的,包括css样式等,前面的bankImg、bankNumber、bankPassword这三个元素依靠后方的JavaScript文件进行修改,使用的是DOM中的innerHTML,以及修改src。

var imgBank = document.getElementById("imgBnak");
var numberBank = document.getElementById("numberBnak");
var passwordBank = document.getElementById("passwordBnak");

var deleteButton = document.getElementById("delete_button");
var tanchu = document.getElementById("tanchu");
var tanchuYes = document.getElementById("viewGame_tanchu_yes");
var tanchuNo = document.getElementById("viewGame_tanchu_no");

var storge = window.localStorage;

var url_value = window.location.search.slice(1);
console.log("这里是key:"+url_value);  //这里打印出来key

var value_viewbank = storge.getItem(url_value);
console.log("这里是值:"+value_viewbank);

var imgBank_number = value_viewbank.slice(0, 2);
imgBank.src = switchBankImg(imgBank_number);

var numberBank_number = value_viewbank.slice(2, 5);  //这里应该是剪切19位
numberBank.innerHTML = numberBank_number;

var passwordBank_number = value_viewbank.slice(5);  //这里应该是19
passwordBank.innerText = passwordBank_number;

function switchBankImg(bankNumber){
	var numberBank = bankNumber;
	switch(numberBank){
		case "01":
			return "../img/bank/chinaBank.jpg";
			break;
		case "02":
			return "../img/bank/jianshe.jpg";
			break;
		case "03":
			return "../img/bank/gongshang.jpg";
			break;
	}
}



deleteButton.onclick = function(){
    tanchu.style.display = "block";
    console.log("a");
};

tanchuNo.onclick = function(){
    tanchu.style.display = "none";
    console.log("b");
};
tanchuYes.onclick = function(){
	alert("上传成功");
	//这里需要添加上隐藏,因为点击了是下面的tanchu这个div也应取消
	tanchu.style.display = "none";
	
	//点击删除location
	if(!window.localStorage){
		alert("不支持location");
	}else{
		storge.removeItem("a");
		console.log("删除成功");
	}
};

//返回按钮
document.addEventListener('plusready', function() {
    var webview = plus.webview.currentWebview();
    plus.key.addEventListener('backbutton', function() {
        webview.canBack(function(e) {
            if(e.canBack) {
                webview.back();
            } else {
                webview.close(); //hide,quit
                //plus.runtime.quit();
            }
        })
    });
});

具体文件我已上传至码云和csdn的资源网站,有兴趣的同学可以下载看看,有不正确的地方请斧正!
CSDN资源:https://download.csdn.net/download/feng_ye__/11235200

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的前端代码示例,实现账号密码注册登录功能。这个示例使用了 jQuery 和 Bootstrap 框架,用于实现页面布局和交互效果。注意,这个示例中的密码明文传输并不安全,实际应用中需要使用 HTTPS 协议和密码加密技术来保障用户安全。 ```html <!DOCTYPE html> <html> <head> <title>账号密码注册登录示例</title> <meta charset="UTF-8"> <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/bootstrap/5.1.0/css/bootstrap.min.css"> </head> <body> <div class="container"> <h1>账号密码注册登录示例</h1> <form id="register-form"> <h2>注册</h2> <div class="mb-3"> <label for="register-username" class="form-label">用户名</label> <input type="text" class="form-control" id="register-username" name="username" required> </div> <div class="mb-3"> <label for="register-password" class="form-label">密码</label> <input type="password" class="form-control" id="register-password" name="password" required> </div> <button type="submit" class="btn btn-primary">注册</button> </form> <form id="login-form"> <h2>登录</h2> <div class="mb-3"> <label for="login-username" class="form-label">用户名</label> <input type="text" class="form-control" id="login-username" name="username" required> </div> <div class="mb-3"> <label for="login-password" class="form-label">密码</label> <input type="password" class="form-control" id="login-password" name="password" required> </div> <button type="submit" class="btn btn-primary">登录</button> </form> </div> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(document).ready(function() { // 注册表单提交 $("#register-form").submit(function(event) { event.preventDefault(); var username = $("#register-username").val(); var password = $("#register-password").val(); $.post("/register", { username: username, password: password }, function(data, status) { alert("注册成功!"); }).fail(function(xhr, status, error) { alert("注册失败:" + error); }); }); // 登录表单提交 $("#login-form").submit(function(event) { event.preventDefault(); var username = $("#login-username").val(); var password = $("#login-password").val(); $.post("/login", { username: username, password: password }, function(data, status) { alert("登录成功!"); }).fail(function(xhr, status, error) { alert("登录失败:" + error); }); }); }); </script> </body> </html> ``` 这段代码包含两个表单:注册表单和登录表单。用户在注册表单中输入用户名和密码,点击注册按钮后,前端将这些信息通过 AJAX POST 请求发送到后端,后端进行用户注册操作,并将结果返回给前端。在登录表单中,用户输入已注册的用户名和密码,点击登录按钮后,前端将这些信息通过 AJAX POST 请求发送到后端,后端进行用户认证操作,并将结果返回给前端。 需要注意的是,这个示例中的注册和登录请求的 URL 都是 `/register` 和 `/login`,实际应用中需要根据后端 API 的设计来确定正确的请求 URL。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值