Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有cookies的javascript计数器不';行不通_Javascript_Cookies_Setcookie - Fatal编程技术网

带有cookies的javascript计数器不';行不通

带有cookies的javascript计数器不';行不通,javascript,cookies,setcookie,Javascript,Cookies,Setcookie,我只是试着用cookies制作一个计时器,使一个按钮只可点击3次(我必须用cookies制作,因为它会在过程中刷新页面),我制作了这个计时器,但它不起作用。我的页面上没有任何变化 我所拥有的代码是由程序执行的 计时器-(或者至少是我认为可以用作计时器的): Coockie功能: function setCookie(cname, cvalue, exdays) { var d = new Date(); d.setTime(d.getTime() + (exdays * 24 *

我只是试着用cookies制作一个计时器,使一个按钮只可点击3次(我必须用cookies制作,因为它会在过程中刷新页面),我制作了这个计时器,但它不起作用。我的页面上没有任何变化

我所拥有的代码是由程序执行的

计时器-(或者至少是我认为可以用作计时器的):

Coockie功能:

function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
    var expires = "expires=" + d.toUTCString();
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}

function getCookie(cname) {
    var name = cname + "=";
    var decodedCookie = decodeURIComponent(document.cookie);
    var ca = decodedCookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1);
        }
        if (c.indexOf(name) == 0) {
            return c.substring(name.length, c.length);
        }
    }
    return "";
}

function checkCookie(name) {
    var value = getCookie("name");
    if (value != "") {
        return value;
    }
}
函数setCookie(cname、cvalue、exdays){
var d=新日期();
d、 设置时间(d.getTime()+(exdays*24*60*60*1000));
var expires=“expires=“+d.toutString();
document.cookie=cname+“=”+cvalue+”;“+expires+”;path=/”;
}
函数getCookie(cname){
变量名称=cname+“=”;
var decodedCookie=decodeURIComponent(document.cookie);
var ca=decodedCookie.split(“;”);
对于(变量i=0;i
getCookie始终返回“undefined”,因为cookie名称错误。拆下制动器

function checkCookie(name) {
    var value = getCookie(name); //here you go
    if (value != "") {
        return value;
    }
}
getCookie始终返回“undefined”,因为cookie名称错误。拆下制动器

function checkCookie(name) {
    var value = getCookie(name); //here you go
    if (value != "") {
        return value;
    }
}
一些问题:

  • 从cookie读取值时,请注意它具有字符串数据类型。在将其与另一个数字进行比较或向其中添加1之前,需要将其转换为数字
  • 函数
    checkCookie
    使用了错误的(硬编码的)cookie名称,但它甚至不是必需的函数。您可以使用
    getCookie
    完成所有这些操作
以下是一个工作版本:

mailagain.onclick = function () {
    // make sure to convert to number (unitary plus), or use 0 when it is not a number:
    var counter = (+getCookie("countIt") || 0) + 1;
    setCookie("countIt", counter, 1)
    if (counter > 3) {
        console.log('clicked too many times! (', counter, ')');
    } else {
        console.log('clicked ' + counter + ' number of times.');
    }
};
一些问题:

  • 从cookie读取值时,请注意它具有字符串数据类型。在将其与另一个数字进行比较或向其中添加1之前,需要将其转换为数字
  • 函数
    checkCookie
    使用了错误的(硬编码的)cookie名称,但它甚至不是必需的函数。您可以使用
    getCookie
    完成所有这些操作
以下是一个工作版本:

mailagain.onclick = function () {
    // make sure to convert to number (unitary plus), or use 0 when it is not a number:
    var counter = (+getCookie("countIt") || 0) + 1;
    setCookie("countIt", counter, 1)
    if (counter > 3) {
        console.log('clicked too many times! (', counter, ')');
    } else {
        console.log('clicked ' + counter + ' number of times.');
    }
};

到底是什么不起作用?你有没有检查过浏览器控制台有没有错误?我不知道到底是什么不起作用,我想cookie永远不会被设置或者什么的。这是我第一次使用cookies,所以问题可能很简单。此外,浏览器也没有给出任何错误。我在chrome的调试器中做了
getCookie(“countIt”)
,它说
getCookie(“countIt”):“NaN”
,甚至在按下应该使计时器上升的按钮之后,还有什么不起作用?你有没有检查过浏览器控制台有没有错误?我不知道到底是什么不起作用,我想cookie永远不会被设置或者什么的。这是我第一次使用cookies,所以问题可能很简单。此外,浏览器没有给出任何错误。我在chrome的调试器中执行了
getCookie(“countIt”)
,它说
getCookie(“countIt”):“NaN”
即使在按下应该使计时器上升的按钮后,我还是这样做了,它完成了我的代码应该做的事情,并且工作得很好:)我还可以在控制台中将重置cookies更改为0,或者将其有效时间更改为1分钟吗?因为这样比较容易测试我的东西。不客气。您可以通过另一个按钮将代码添加到,以便从头开始测试。要使cookie更快过期,请将一个较小的数字作为最后一个参数传递给
setCookie
1/(24*60)
将为1分钟。感谢我这样做,它完成了我的代码应该做的事情,并且工作非常完美:)我是否可以在控制台中将cookie重置为0,或者将其有效时间更改为1分钟?因为这样比较容易测试我的东西。不客气。您可以通过另一个按钮将代码添加到,以便从头开始测试。要使cookie更快过期,将较小的数字作为最后一个参数传递给
setCookie
1/(24*60)
将是1分钟。