试图用cookie中的信息填充表单

Trying to populate form with information from a cookie

本文关键字:信息 填充 表单 cookie      更新时间:2023-09-26

我正试图用保存在cookie中的详细信息填充表单。

每个cookie有12位信息,由"---"分隔

我正在努力确保用户名(用户输入的值)与其中一个cookie的用户名(username1)匹配。

我该怎么做?

底部的if循环总是填充cookie数组中的最后一个索引

function populateForm(username){
         var allcookies = document.cookie;
            // Get all the cookies pairs in an array
            cookiearray  = allcookies.split(';');
            // Now take key value pair out of this array
            for(var i=0; i<cookiearray.length; i++){
                username1 = cookiearray[i].split('---')[0];
                password = cookiearray[i].split('---')[1];
                email = cookiearray[i].split('---')[2];
                name_one = cookiearray[i].split('---')[3];
                name_two = cookiearray[i].split('---')[4];
                addr1 = cookiearray[i].split('---')[5];
                addr2 = cookiearray[i].split('---')[6];
                city = cookiearray[i].split('---')[7];
                zip = cookiearray[i].split('---')[8];
                day = cookiearray[i].split('---')[9];
                month = cookiearray[i].split('---')[10];
                year = cookiearray[i].split('---')[11];

                var nameinarray = cookiearray[i].split('---')[0];
                var cityinarray = cookiearray[i].split('---')[7];

                if(nameinarray.indexOf(username.value)){
                        document.getElementById('username_text').value=nameinarray;
                        document.getElementById('city_text').value=cityinarray;
                        alert("in loop " + username.value);
                }
                }

        }

这是因为如果在This字符串中找不到参数,indexOf()函数将返回-1。在包括JavaScript在内的许多编程语言中,-1被视为一个truthy值,因此,如果在if测试中使用,将导致分支被执行。

解决方案:

if (nameinarray.indexOf(username.value) !== -1) {

对您的代码的其他评论:

  • 我质疑你在这里使用indexOf()。难道你不应该想要完全相等,即if (username1 === username.value) {吗?但你使用indexOf()可能有一个我不知道的解释;请随意添加到评论中
  • 您不应该重复执行cookiearray[i].split('---');这是对CPU的浪费。计算一次,将其分配给一个变量,然后在12个赋值语句中重复索引该变量
  • 不确定为什么同时创建username1nameinarraycitycityinarray同上