2012-12-15 137 views
0

使用网站我试图做到的,是存储阵列2在cookie中,如:["reminder1","reminder2"]``["time1","time2"]读取和写入数据在阵列

两个`字符是为了两个数组分开。

根据我的当前代码,Cookie只获得值reminder1,time1,就是这样。

我从字面上做错了这里,但在这一点上,我不知道如何解决这个问题。

到目前为止我的代码:

标记:

<table id="reminders"> 
    <thead> 
     <tr> 
      <td>Emlékeztető szövege</td> 
      <td>Időpont</td> 
      <td>Műveletek</td> 
     <tr> 
    </thead> 
    <tbody> 
     <tr class="remdef"> 
      <td class="remtxt"><em>Kattints a módosításhoz!</em></td> 
      <td class="remtim"><input type="text" class="datepicker"></td> 
      <td class="remope" style="opacity:1.0;"></td> 
     <tr> 
    </tbody> 
</table> 

脚本:

var addnew_html = '<span class="typicn plus '+readCookie('nev')+'" onclick="remtbl(\'addnew\')"></span>'; 
var modify_html = '<span class="typicn edit '+readCookie('nev')+'" onclick="remtbl(\'modify\')"></span>'; 
var remove_html = '<span class="typicn times '+readCookie('nev')+'" onclick="remtbl(\'remove\')"></span>'; 

$('#reminders tbody tr.remdef td.remtxt em').click(function(){ 
    defhtml = '<em>'+$(this).html()+'</em>'; 
    $(this.parentNode).html('<textarea width="100%" cols="50" id="rem-editing" class="rem-edit'+$('#reminders tbody tr').index($(this).parents('#reminders tbody tr'))+'"></textarea>'); 
    changeModifOptions($('#reminders tbody tr.remdef td.remope'),['addnew']); 
}); 

function changeModifOptions(selector,options){ 
    $(selector).html(function(){ 
     return ((!(options.indexOf('addnew'))) ? addnew_html : '')+((!(options.indexOf('modify'))) ? modify_html : '')+((!(options.indexOf('remove'))) ? remove_html : ''); 
    }); 
} 

function remtbl(cmd){ 
    if (cmd == 'addnew'){ 
     var cookieval = readCookie('reminder'); 
     createCookie('reminder',($('#reminders tbody tr.remdef td.remtxt textarea').val().replace('<','&lt;').replace('>','&gt;')+','+$('#reminders tbody tr.remdef td.remtim input.datepicker').val()+((cookieval) ? '``'+cookieval : '')),parent.longtime); 
     $('#reminders tbody').append('<tr class="remelm"><td class="remtxt">'+Array(readCookie('reminder').split('``'))[0]+'</td><td class="remtim"><input type="text" class="datepicker" value="'+Array(readCookie('reminder').split('``'))[1]+'"></td><td class="remope" style="opacity:1.0;"></td><tr>') 
     changeModifOptions($('#reminders tbody tr td.remope:last'),['modify','remove']); 
     $('#reminders tbody tr.remdef td.remtim input.datepicker').val(''); 
     $('#reminders tbody tr.remdef td.remope').html(''); 
    } 
} 
+0

您在javascript中的string.split需要一个正则表达式,这个背景可能意味着某些东西,并且必须逃脱。尝试使用不同的分隔符(如逗号)来查看它是否有效。 –

+0

@EricLeschinski情况并非如此。 – SeinopSys

+2

[JSON.stringify](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/JSON/stringify),[JSON.parse](https://developer.mozilla.org/ en-US/docs/JavaScript/Reference/Global_Objects/JSON/parse)? – Andreas

回答

1

由于@Andreas建议您可以使用JSON.stringify(array)开启数组JSON字符串,并将其返回到使用JSON.parse(string)

var arr=['a','b','c']; 
var json=JSON.stringify(arr); 

createCookie('reminder', json); 

var arrayFromCookie= JSON.parse(readCookie('reminder')); 

旧版本浏览器JavaScript数组,唐不支持JSON对象包括json.js库

1

的JavaScript string.split它可以是一个字符或一个正则表达式的第一个参数。在你发布的代码中,你没有完成这些。

http://www.w3schools.com/jsref/jsref_split.asp

要使它成为一个有效的正则表达式,使用斜线backtic backtic斜线。就像这样:

/``/ 
+0

但是,添加正则表达式并不会改变cookie没有正确设置的事实。 – SeinopSys