当我尝试读取我设置的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
想到这意味着什么?
答案 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结果未定义的原因。