2012-12-15 176 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