我有一个函数,它接受一个参数(键)来从 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/