javascript - 函数不返回变量

标签 javascript jquery cookies

我有一个函数,它接受一个参数(键)来从 cookie 中检索它的值。我在需要特定信息的任何地方调用该函数。除非一切都返回为未定义。

//before $(document).ready();
var keyval = ""; //VARIABLE FOR PASSING COOKIE VALUE
var getCookieVal =function(c_name){
var cleanCookie = document.cookie.substr(0, document.cookie.indexOf("; __utma="));//REMOVES EXTRA INFORMATION
var cookieArr = cleanCookie.split(";");//MAKES AN ARRAY OF EACH PAIR
    $.each(cookieArr, function(index, val){
        var valArr = val.split("=");//SPLITS THE KEY VALUE PAIR INTO AN ARRAY
        var key = valArr[0];
        keyval = valArr[1];
        if (key == c_name){
            alert(keyval);//ALERTS CORRECT ANSWER
            return keyval;
        }
    });
    console.log(keyval);//RETURNS UNDEFINED
}

//IN ANOTHER FILE I CALL THE FUNCTION:
$(document).ready(function(){
    getCookieVal("username");
    alert(keyval);//RETURNS UNDEFINED
});

有人知道我做错了什么或者我如何获得这个值吗?

最佳答案

给你:

var getCookieVal = function(key) {
    var coo = document.cookie;
        arr = coo.substr(0, coo.indexOf('; __utma=')).split(';'),
        value;
    $.each(arr, function(i, v) {
        var valArr = v.split('=');
        if ( valArr[0] === key ) {
            value = vallArr[1];
            return false;
        }            
    });
    return value;
};

$(document).ready(function() {
    var keyval = getCookieVal('username');
    alert(keyval);
});

因此,您在 if 分支内返回 false(一旦找到所需的值)即可跳出 $.each 循环。然后,您只需从 getCookieVal 函数返回值即可。

请注意,这里不需要定义全局keyval变量。

关于javascript - 函数不返回变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6059559/

相关文章:

javascript - 为什么成功的 jQuery 跨域发布请求没有触发成功处理程序?

IE8 不支持 JQuery

Perl 获取 session cookie

javascript - Safari 13+ iframe 阻止 CORS cookie

javascript - HTML 图像和其他组件根据页面宽度调整大小

javascript - 如何从 C# 代码后面调用本地存储的 javascript 函数

jQuery 拖放 <li> 元素样式

Powershell 在不使用 invoke-webrequest 的情况下处理 cookie 弹出窗口

javascript - 如何以编程方式使用 preact-router 进行导航?

javascript - 使用变量作为 find() 内投影的字段说明符