setInterval不会增加var值

时间:2016-03-07 13:27:06

标签: javascript jquery

此代码应每隔三秒更改#magia div的内容,但不会更改。

$(function(){
    var NArray = -1;
    var ringraziamenti = ["", "Thanks", 
    "You saved my Website", 
    "Now you can use it, and try to find all the hidden tresure that there are", 
    "Good Luck"
    ];
    $("#Save").click(function(){
            setInterval(function(){
            NArray = NArray + 1;
    $("#magia").html(ringraziamenti[NArray]);
  }, 3000);
}
);
});

2 个答案:

答案 0 :(得分:1)

地球上的Modify1Intervallo是什么?您在寻找function关键字吗?:

$(function() {
    //...
    setInterval(function() {
        $("#Save").click(function() {
            //...
        });
    }, 3000);
});

修改:此外,实际正在做什么

  

此代码应每三秒更改一次#magia div的内容

嗯,不。它所做的就是每三秒设置一次点击处理程序。在单击元素之前,不会调用处理程序。你不想每三秒执行一次动作吗?删除单击处理程序:

setInterval(function() {
    NArray = NArray + 1;
    $("#magia").html(ringraziamenti[NArray]);
}, 3000);

如果您不想在单击元素之后设置间隔,请在点击处理程序中包含

$("#Save").click(function (){
    setInterval(function() {
        //...
    }, 3000);
});

答案 1 :(得分:0)

问题是您的代码实际上并没有真正执行第NArray = NArray + 1;

$("#Save").click(function(){})将点击事件绑定到#Save元素,因此您的间隔每3000毫秒重新分配一次点击功能。在实际点击#Save元素之前,该click函数内部的任何操作都不会执行。

您的间隔函数应如下所示:

setInterval(function (){
  NArray = NArray + 1;
  $("#magia").html(ringraziamenti[NArray]);
 }, 3000);