Chris Brown 2019-07-23 22:42 采纳率: 100%
浏览 310
已采纳

关于javascript localstorage和sessionstorage 的问题

关于javascript的问题

在做关于html5注册登陆页面的时候,利用localstorage和sessionstorage进行判断,但是出现了各种问题。请教一下各位

具体是在登陆和注册页面都有两个input标签用来存放用户名(电话)和密码,但是在使用函数的时候还是出现了问题,代码如下:

<script type="text/javascript">var itel = document.getElementById("itel");
var ipasswd = document.getElementById("ipasswd");
var itelval = itel.value;//获取用户名
var ipasswdval = ipasswd.value;//获取密码框中的密码
var k = false;

function check() {
    for(var i = 0; i < localStorage.length; i++) {
        if(itelval == localStorage.key(i)) {
            if(ipasswdval == localStorage[itelval]) {
                alert("登录成功!");
                window.location.href = ("main.html");
                k = true;
                break;
            } else {
                alert("密码错误!");
                ipasswd.value = "";
                k = true;
                break;
            }
        }
    }
    if(k == false) {
        alert("无此用户!");
        ipasswd.value = "";
        itel.value = "";
    }
}

function jump() {
    window.location.href = "register.html";//跳转到注册页面
}</script>

其中localstorage和sessionstorage里面的数据在注册页面都可以正常储存。
求解答!感激不尽!
附上问题截图:

图片说明

  • 写回答

1条回答

  • 一只成序源 2019-07-24 09:22
    关注

    经过我多次测试,终于发现了问题,哈哈。你在方法外面获取了itelval 和ipasswdval 的值,这个时候值还是为空,当你调用方法的时候。localstorage里面没有空的值吧,所以循环里面的第一个大IF就不进去了,直接到无此用户。

    解决办法很简单:

    function check() {
    var itelval = itel.value;//获取用户名
    var ipasswdval = ipasswd.value;//获取密码框中的密码
    ....................................
    

    把获取值放到方法里面就好了。就可以解决了。
    嘿嘿~

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 slam rangenet++配置
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊