0

変数を受け取り、その変数がlocalStorageにあるかどうかを確認し、ない場合はlocalStorageに追加する関数を作成しています。localStorageにある場合は、末尾に数字を追加して、新しいlocalStorageキーが追加されるようにします。

これまでのところ、私はこれまでに得ました:

var title = "Test";
test(title);

function test(title) {
    counter = 0;
    console.log("counter = " + counter);
    if (localStorage.getItem(title)) {
        counter = counter + 1;
        title = title + " " + counter;
        console.log("found " + title);
        console.log("found " + counter);
        test(title);
    } else {
        console.log("not found " + title);
        console.log("not found " + counter);
        localStorage.setItem(title, " ");
        load();
    }
}

function load() {
    for (var key in localStorage) {
        $(".keys").append(key + "<br />");
    }
} 

そうすれば、関数を5回実行すると、次のローカルストレージキーが必要になります。

Test, Test 1, Test 2, Test 3, Test 4

代わりに、localStorageキーがあります

Test, Test 1, Test 1 1, Test 1 1 1, Test 1 1 1 1

数字が追加されない理由はわかりませんが、ここにjsFiddleを示します:http://jsfiddle.net/charlescarver/x6ALG/5/

4

2 に答える 2

1

関数を呼び出すたびにゼロにリセットされないようにカウンターを関数の外側に移動し、カウンターをtitle使用して算術演算を実行できるようにパラメーターをクリーンに保ちます。

var counter = 0;
var title = "Test";

test(title);

function test(title) {
    var newTitle = title + " " + counter;
    console.log("counter = " + counter);
    if (localStorage.getItem( newTitle )) {

        counter = counter + 1;

        console.log("found " + newTitle);
        console.log("found " + counter);

        test(title);
    } else {

        console.log("not found " + newTitle);
        console.log("not found " + counter);
        localStorage.setItem( newTitle, " " );
        load();
    }
}

function load() {
    for (var key in localStorage) {
        $(".keys").append(key + "<br />");
    }
}

newTitle変数に注意してください。

デモ: http: //jsfiddle.net/x6ALG/7/

于 2013-03-18T19:01:15.290 に答える
0

関数テスト内でカウンターを0に初期化しないでください。それをグローバルにし、関数の外で初期化します。関数が呼び出されるたびに、0からカウントが開始されます。

于 2013-03-18T18:56:54.873 に答える