0
document.cookie = "happy=random stuff";
function readCookie(name) {
    var cookie,cname,i;
    cookie = document.cookie.split(";");
    cname = name;
    for (i=0; i<=cookie.length; i++) {
        var c = cookie[i];
        if (c.indexOf(cname) == 0) {
            alert(c.substring(cname.length,c.length));
            return c.substring(cname.length,c.length);
        }
    }
    return null;
}

readCookie("happy");

http://jsfiddle.net/a2R3j/ この行は間違っているようです:

if (c.indexOf(cname) == 0) {

それは完全に機能します。ただし、jsfiddle はエラーがあると言います。実際には何か問題がありますか?

わかりやすくするために編集: 関数 getCookie(name here) を呼び出して、Cookie のコンテンツを返すようにします。わかりやすくするために、別の編集を行います。 Yusaf コード:もの

indexOf を使用したコード:もの

4

2 に答える 2

0

http://jsfiddle.net/6qLZe/

.split("=")[1]部分文字列メソッドではなく使用

document.cookie = "joker=batman";

function readCookie(cname) {
    var cookie_split = document.cookie.split(";");
    for (i = 0; i < cookie_split.length; i++) {
        var cookie_var = cookie_split[i].split("=")[0];
        if (cookie_var == cname) {
            return cookie_split[i].split("=")[1];
        }
    }
    return null
}

alert(readCookie("joker"));
于 2013-01-19T22:00:34.957 に答える
0

document.cookie に 1 つの Cookie があるため、長さは 1 であり、その Cookie は位置 0 にあります (js はゼロから始まります)。

あなたのforループは と同じくらい高くなるので、最初に for 、次に for 、 i <= cookie.length2回反復します。存在しないために失敗します。cookie[0]cookie[1]cookie[1]

forループを次のように変更しますfor (i = 0; i < cookie.length; i++) {

于 2013-01-19T22:01:53.600 に答える