如何在 JS 中调用特定的 cookie

how to call to a specific cookie in JS

我该怎么做,W3Schools 没有帮助这是我的代码

document.cookie="krul=1";
var x = document.cookie;
if(x == 1){
    document.getElementById("krul").src="https://www.youtube.com/v/An9M93j2XUs?version=3&loop=1&playlist=An9M93j2XUs&autoplay=1";
}

我创建了一个 cookie kruuuul=1 然后我尝试将它分配给 x 并在 if 语句中进行比较。

'x' 的 cookie 值为 'krul=1',而不是您的条件语句中的“1”。

您可能希望在 'if' 语句之前解析 cookie 以获得您需要的单个 cookie 值。否则,您需要检查 'x' 的值是否等于 'krul=1'.

当然后一种方法不是很理想。首选第一种方法,更容易长期处理cookies。

有很多方法可以实现这一点,但这里是 W3School 的示例,通过 javascript:

获取文档 cookie 值
    function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.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 "";
}

因此,如果您要将上述代码段添加到脚本中,那么您的代码应该调用 'getCookie' 函数来获取值。

新代码将类似于:

document.cookie="krul=1";
var x = getCookie("krul");
if(x == 1){
    document.getElementById("krul").src="https://www.youtube.com/v/An9M93j2XUs?version=3&loop=1&playlist=An9M93j2XUs&autoplay=1";
}

document.cookie 将 return 所有附加到页面的 cookie。您必须解析 returned 字符串才能找到所需的信息。有许多不同的方法可以做到这一点。

此函数接受一个 cookie 名称和一个可选参数。该函数将 return cookie 名称和分配的值,或者只是您想要的值。

function getSpecificCookie(cookieName, valueOnly) {
    //Get original cookie string
    var oCookieArray = document.cookie.split(';'),
        fc,
        cnRE = new RegExp(cookieName + '\=');
    //Loop through cookies
    for (var c = 0; c < oCookieArray.length; c++) {

        //If found save to variable and end loop
        if (cnRE.test(oCookieArray[c])) {
            fc = oCookieArray[c].trim();
            if (valueOnly) {
                fc = fc.replace(cookieName +'=', '');
            }
            break;
        }

    }
    return fc;
}

你会像这样使用它:

//Set the cookie;
document.cookie = 'krul=1';

//Either call the function to return the entire cookie;
var x = getSpecificCookie('krul');

if (x == 'krul=1') {
    //do something
}


//Or call the function to return just the cookie value;
var x = getSpecificCookie('krul', true);
if (x == 1) {
    //do something
}