javaScript时髦的cookie?

时间:2011-12-22 01:40:41

标签: javascript

当我尝试读取我设置的cookie时,某些内容似乎不正确

这是我的cookie功能

function readCookie(){
if (document.cookie !=""){
    document.getElementsByName("eMail").innerHTML = alert("hello, " +    
document.cookie.split("=")[1]);
}
}

//for setting cookies
function writeCookie(cName, cValue, expDate, cPath, cDomain, cSecure){
if(cName && cValue!= ""){
var cString = cName + " = " + escape(cValue);

if (expDate) cString += ";expires=" + expDate,toGMString();
if (cPath) cString += ";path=" + cPath;
if (cDomain) cString += ";domain=" + cDomain;
if (cSecure) cString += ";secure";

document.cookie = cString;
}
}

正在设置Cookie

 <input type="submit" value="Submit"     
onclick="writeCookie('userId',document.getElementsByName('eMail').value)"/>

警告框

hello, undefined;__utma

想到这意味着什么?

3 个答案:

答案 0 :(得分:5)

警报功能返回undefined

所以

 document.getElementsByName("eMail").innerHTML = alert("hello, " + 
       document.cookie.split("=")[1]);

eMail的html设置为undefined

此外,getElementsByName会返回元素的集合

你的意思是

document.getElementsByName("eMail")[0].innerHTML = "hello, " +    
       document.cookie.split("=")[1];

或者是否有多个具有此名称的元素?

var eMailElements = document.getElementsByName("eMail");
for (var i = 0; i < eMailElements.length; i++)
    eMailElements[i].innerHTML = "hello, " + document.cookie.split("=")[1];

最后,如果您只定位一个元素,则可以给它一个(唯一的) ID ,然后只需执行

document.getElementById("eMailId").innerHTML = "hello, " +    
       document.cookie.split("=")[1];

答案 1 :(得分:3)

一些问题:

if(cName && cValue!= ""){

将其更改为:

if ((cName != "") && (cValue != "")) {

此行也有问题:

if (expDate) cString += ";expires=" + expDate,toGMString();
                                             ^ Should be a period

答案 2 :(得分:0)

我在那里看到__utma告诉我一件事:你在页面的某个地方有Google广告。他们为跟踪用户设置了cookie,您的脚本正在阅读它们。无论如何,你读取cookie的方法都是错误的。

function readCookie(cName) {
    var cookies = document.cookie.split(";"),
        l = cookies.length, i, k, v;
    for( i=0; i<l; i++) {
        v = cookies[i].split("=");
        k = v.shift();
        v = v.join("=");
        if( k == cName) return v;
    }
}

此外,getElementsByName()返回一个NodeList,因此您需要从中获取[0],或者在编写cookie时使用getElementById() - 这就是cookie结果未定义的原因。