计数器在javascript中不更新

Counter not updating in javascript?

本文关键字:更新 javascript 计数器      更新时间:2023-09-26

我正在编写一个函数,该函数将接受一个变量,然后检查该变量是否在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次时,我应该有localStorage键

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/

将计数器移到函数外部,这样您就不会在每次调用函数时将其重置为零,并保持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/

不要在函数测试中将计数器初始化为0。将其设为全局并在函数外部初始化。每次调用函数时,它都从0开始计数。