0

Cookieにもう少し問題があったので、サイトでCookie(To Doリストアイテム)を保存し、ページが読み込まれた後に再読み込みして、画面上のテーブルに戻しました。

しかし、すべてのCookieを削除して最初からやり直そうとすると、コンソールエラーが発生し続けますCannot read property 'undefined' of undefined 。コードの以下の2つのセクションをコメントアウトすると、この問題は解決しますが、Cookieシステムはもちろん失敗します。

このセクションでは、誰かが最後に訪問したときにやることリストにあったアイテムの数をチェックし、そのi数として設定するので、何も削除されません。

var listCookies = document.cookie.split(";");

for(var a = 0; a < listCookies.length; a++) {

    var listCount = myCookies[i].trim().split("=");

    if(listCount[0].indexOf("listCount") === 0) {
        var i = listCount;
    } else {
        var i = 0;
    }
 }

このセクションでは、実際のTo Do自体を見つけて、画面上のテーブルに配置します。

var myCookies = document.cookie.split(";");

for(var b = 0; b < myCookies.length; b++) {

    var cookie = myCookies[i].trim().split("=");

    if(cookie[0].indexOf("todo-") === 0) {

        window.todoTable.insertAdjacentHTML('beforeend', decodeURIComponent(cookie[1]));
    }
}

問題は、誰かが最初にアクセスしたときにCookieが保存されif (typeof document.cookie === "undefined")ていないことですが、何も実行されていないように見えるステートメントを追加しようとしたときです。

これらのコードをラップしたifステートメントが必要だと思いますか?つまり、Cookieがない場合は、「このビットをスキップしてください」。ある場合は、「何かをする」。

4

1 に答える 1

1

iグローバルである必要があります、私はそれを作りましたtotalCount

最初のセクションは次のようになります。

var totalCount = 0;

var listCookies = document.cookie.split(";");

for(var a = 0; a < listCookies.length; a++) {

    var listCount = listCookies[a].trim().split("=");

    if(listCount[0].indexOf("listCount") === 0) {
        totalCount = listCount[1];
        break;
    }
 }

2番目のセクションは次のようになります。

var myCookies = document.cookie.split(";");

for(var b = 0; b < myCookies.length; b++) {

    var cookie = myCookies[b].trim().split("=");

    if(cookie[0].indexOf("todo-") === 0) {

        window.todoTable.insertAdjacentHTML('beforeend', decodeURIComponent(cookie[1]));
    }
}
于 2013-01-09T16:06:15.003 に答える