zoukankan      html  css  js  c++  java
  • 用JS制作一个信息管理平台(1)

    首先,介绍一些需要用到的基本知识。

    【JSON】

    JSON是数据交互中,最常用的一种数据格式。

    由于各种语言的语法都不相同,在传递数据时,可以将自己语言中的数组、对象等转换为JSON字符串。 传递之后,可以将JSON字符串,再解析为JSON对象。

    JSON对象的使用与JS中的对象基本相同,唯一需要区别的是,JSON中的键,必须是字符串。

    比如:

    var jsonObj = {
    "name":"zhangsan",
    "age":"12"
    }

    还有两个特别常用的函数。

    将JS中的对象、数组,传化为JSON字符串。

    var str1 = JSON.stringify(users);
    console.log(str1);

     将JSON字符串转化为JSON对象。

    var obj = JSON.parse(str1);
    console.log(obj);

    总结一下新增或是删除一条数据的基本方法。

    【新增一条数据】
     1、 取到录入的各种信息
     2、 把这些信息封装成一个对象。
     3、 从本地文件中,读取出存储数据的数组字符串。并将字符串,转回数组格式。
     如果本地文件中,没有这个数组,就新建一个数组存放。
     4、 数组中,push进一个新组建的对象。
     5、 将新数组,重新转为字符串。把字符串丢回文件。
     6、 重新读取一边文件,重新加载表格。


     【删除一条数据】
     1、 从文件中,读取出字符串,转回数组格式。
     2、 判断需要删除的是第几条数据。
     3、 删除掉数组对应的数据、splice
     4、 把新数组重新转为字符串,放回文件。
     5、 重新读取一边文件,重新加载表格。

     HTML5 新增Web存储方式,主要有两种:
     localStoragesessionStorage,两个对象在使用方式上没有任何区别,唯一的不同点是存储数据的有效时间
     ① localStorage : 除非手动删除,否则数据将一直保存在本地文件;
     ② sessionStorage : 当浏览器关闭时,sessionStorage就被清空。

     [Storage的数据存储]
     1、Storage可以像普通对象一样,使用.追加或者读取最新的数据。
     eg :localStorage.username = "张三";

     2、常用的函数

     保存数据:localStorage.setItem(key,value);
     读取数据:localStorage.getItem(key);
     删除单个数据:localStorage.removeItem(key);
     删除所有数据:localStorage.clear();
     得到某个索引的key:localStorage.key(index);

    下面通过一个具体的案例详细的介绍一下这些函数的用法。

    这是一个信息管理平台,首先我们需要注册一个账号。

    附上一小部分表单结构的代码:

    <div class="right">
    <h2>
    用户注册
    <span>user login</span>
    </h2>
    <div class="user">
    <input placeholder="3-15位字母数字,开头必须是字母" name="userNo" id="userNo" tabindex="1" class="account" autocomplete="off">
    <span id="p1">用户名已注册</span>
    </div>
    <div class="pwd">
    <input placeholder="4-10位字母数字组成" type="password" id="pwd" name="pwd" tabindex="2" class="passw" autocomplete="off">
    <span id="p2">两次密码输入不一致</span>
    </div>
    <div class="pwd">
    <input placeholder="请再次输入密码" type="password" id="repwd" name="pwd" tabindex="2" class="passw" autocomplete="off">
    </div>
    <input onclick="addAize()" class="denglu" type="submit" value="注&nbsp;册" tabindex="3">
    <p class="zhuce" onclick="denglu()">
    点击返回登录页面>>>
    </p>
    </div>

    当我们点击注册的时候,会触发一个点击事件,然后触发函数addAize()。

    这个时候,我们需要验证密码是否正确,或是输入的格式是否符合要求。

    首先,我们先取出我们所输入的内容。

    var user = document.getElementById("userNo").value;
    var pwd = document.getElementById("pwd").value;
    var repwd = document.getElementById("repwd").value;


    具体的验证要求通过正则来验证,这里就不详述了。

    若是符合要求,将用户名和密码封装成一个对象。

    var site = {
    user : user,
    pwd : pwd
    }

    若是第一次注册,则在本地存储中新建一个数组arr=[];

    若是已经有数组,则录入这条数据。

    if(localStorage.sites == undefined){
    var arr = [];
    }else{
    var str = localStorage.sites;
    var arr = JSON.parse(str);
    }

    验证用户名是否重复或者是两次密码输入是否一致,这里不详述。

    当全都通过验证之后,将这条信息存入本地,跳转到登录页。

    arr.push(site);
    var str = JSON.stringify(arr);
    localStorage.sites = str;
    alert("注册成功");
    location = "登录.html";

    登陆的功能其实跟注册很像,也是从本地中取出数据,与输入的数据进行一一比对,或是有相同的,则登陆成功,跳转到主页面。

    管理平台的信息录入功能也与注册大同小异,就不每个举例了。

    这里主要说一下信息的展示和删除功能。

    首先创建一个函数showAllSite()

    每当界面刷新或是信息录入的时候,调用这个函数。

    function showAllSite(){
    var str = localStorage.sitess;
    var arr = JSON.parse(str);
    var html = "";
    if(localStorage.sitess == undefined){
    return;
    }
    arr.forEach(function(item,index){
    html += "<tr class='tr' onclick='chooseInput("+index+")' ondblclick='updateSite("+index+")'><td align='center'><input type='checkbox' onclick='chooseInput("+index+")' value='"+index+"' class='checkbox' style='margin-top:15px'/></td><td>"+(index+1)+"</td><td>"+item.name+"</td><td>"+item.city+"</td><td>"+item.home+"</td><td style='color:black'>"+item.jingli+"</td><td style='color:black'>"+item.youbian+"</td><td style='color:black'>"+item.iphone+"</td><td style='color:black'>"+item.star+"</td></tr>";
    });
    var tbody = document.getElementById("tbody");
    tbody.innerHTML = html;
    }

    因为完整代码太多,可能拿出一段并不能完全明白,我大体解释一下思路。

    创建一个html变量,先赋值一个空字符串即可。

    首先,将本地存储的数据取出来,转化成对象格式。

    然后检测这个对象是否存在,也就是本地是否有一条以上的数据。

    然后遍历这些数据,把他们加给表格中,附给html变量。

    最后用一开始在文件中就创建好的表格中的tbody。通过.innerHTML = html。将数据打印出来。

    这样就可以将添加进去的表单通过表格展示出来。

    再介绍删除功能,同样是创建一个函数delSite()附到删除按钮的onclick事件上。

    需要注意的是,删除功能一定要有一个确认按钮,也就是confirm()。

    当结果返回true的时候,执行这个函数

    var checkboxs = document.getElementsByClassName("checkbox");
    var count = 0;
    var str = localStorage.sitess;
    var arr = JSON.parse(str);
    for(var i=0; i<checkboxs.length; i++){
    if(checkboxs[i].checked){
    var index = parseInt(checkboxs[i].value)-count;
    count++;
    arr.splice(index,1);
    }
    }
    localStorage.sitess = JSON.stringify(arr);
    if(count==0){
    alert("请至少选择一个删除对象");
    }else{
    alert("删除成功!共删除"+count+"条数据!");
    showAllSite();
    }

    这段代码的核心思想是,给每一个checkbox加上一个value,通过他们的value值,来匹配这一行列表对应的index值。

    检测chenkbox是否被选中,将选中的每一个所对应的那一行删除掉。

    因为要彻底删除掉,所以一定不能用delete,要用splice(index,1)。

    这样一个简单的信息录入系统就完成了,更多详细的功能我们以后再介绍吧。

  • 相关阅读:
    剑指 Offer——13. 调整数组顺序使奇数位于偶数前面
    剑指 Offer——3. 从尾到头打印链表
    剑指 Offer——2. 替换空格
    剑指 Offer——1. 二维数组中的查找
    LeetCode 905. Sort Array By Parity 按奇偶校验排列数组
    LeetCode 448. Find All Numbers Disappeared in an Array找到所有数组中消失的元素
    SSH 代码笔记
    anaconda3安装caffe
    opencv多版本安装
    人脸文章与数据库
  • 原文地址:https://www.cnblogs.com/lihaohai/p/7498157.html
Copyright © 2011-2022 走看看