0

私が達成しようとしているのは、次のように2つの配列をCookieに格納することです。["reminder1","reminder2"]``["time1","time2"]

2つの`文字は、2つの配列を分離するためのものです。

私が持っている現在のコードでは、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('');
    }
}
4

2 に答える 2

1

javascript string.split の最初のパラメーターは、文字または正規表現のいずれかを取ります。投稿したコードでは、これらのどちらも行っていません。

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

有効な正規表現にするには、スラッシュ バックティック バックティック スラッシュを使用します。このような:

/``/
于 2012-12-15T22:23:19.797 に答える
1

@Andreasが提案したように、配列をJSON文字列に変換しJSON.stringify( array)、それをJavaScript配列に返すことができますJSON.parse( string)

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

createCookie('reminder', json);

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

JSON オブジェクトをサポートしていない古いブラウザーの場合は、json.js ライブラリーを含めます。

于 2012-12-15T22:55:36.813 に答える