尝试使用cookie中的信息填充表单

时间:2015-03-31 23:34:29

标签: javascript

我正在尝试使用我已保存在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);

                }

                }


        }

1 个答案:

答案 0 :(得分:1)

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

解决方案:

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

对您的代码的其他评论:

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