2015-03-31 61 views
0

我想填充一个表单,其中包含我保存在cookie中的详细信息。试图用cookie中的信息填充表单

每个cookie具有通过分隔信息的12位“---”

我想,以确保用户名(由用户输入的值)的饼干ONE的用户名(用户名1)匹配。

我该怎么做?

的循环,如果在底部总是与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

这是因为,如果参数未在字符串发现indexOf()函数返回-1在最后一个索引填充。在包括JavaScript在内的许多编程语言中,-1被视为真值,因此,如果在if-test中使用,将导致分支被执行。

解决方案:

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

您的代码的其他意见:

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

非常感谢!我试图做username1 == username.value,它不会工作(我必须打错输入,因为现在正在工作) – Sue 2015-03-31 23:51:25