如何启用cookie

时间:2011-10-14 02:03:07

标签: javascript

我有这个分配来读取,写入,启用cookie,以便用户名将存储在变量中,然后写入cookie。我的问题是,似乎代码的最后一部分正在运行。但是,假设用户名被存储到变量中的第一部分不起作用,我可以看到当我运行代码并且前两个警告框没有显示时。假设以“你好,我是你的宠物摇滚”打开并且在我最后一次点击iRock之后,图像被假定为改变为快乐的iRock。但它不会发生。我想因为cookie没有被读取。有什么建议。这是链接:http://ciswebs.smc.edu/cis54/tyson_schweidel /iRockChapter3.htm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org   /TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>iRock - The Virtual Pet Rock</title>
<link href="donut_stylesheet/donut.css" rel="stylesheet" type="text/css" />

<script type ="text/javascript" >
var userName;

function resizeRock(){
document.getElementById("rockImg").style.height = (document.body.clientHeight - 100) * 0.9;
}

function greetUser(){
userName = readCookie("rock_username");
if(userName)
alert("Hello " + userName + ", I missed you.");
else 
alert("Hello, I am your pet rock");
}

function touchRock(){
if(userName)
    alert("I like attention," + userName + ". Thank you.");
}

    userName = prompt("What is your name?", "Enter name here.");
if(userName) 
alert("It is good to meet you, " + userName + ".");
writeCookie(irock_username", userName, 1 * 365);


document.getElementById("rockImg").src = "rock_happy.png";
setTimeout("document.getElementById(('rockImg').src = 'images/rock.png';", 5 * 60 * 1000);





</script>
</head>


<body onload="resizeRock(); greetUser(); onResize="resizeRock();">
<img id="rockImg" src="images/rock.png" alt="iRock" style="cursor:pointer"   onClick="touchRock();" />
</body>
</html>

2 个答案:

答案 0 :(得分:4)

让我们打破这一点。

  

如何启用Cookie

默认情况下,几乎每个浏览器都会启用Cookie至少2000年。虽然您不能依赖启用了Cookie的人 - 但我认为这是家庭作业的安全假设。现在,对于要启用而不是的Cookie,用户必须明确关闭它们。

  

读取,写入,启用cookie,以便用户名将存储在变量中,然后写入cookie

您有两个未声明的功能。正在调用readCookiewriteCookie,但您尚未在任何地方声明它们。你需要看起来像这样的东西:

function readCookie() {
    //Return the value of the cookie
}


function writeCookie(value) {
    //Write the value to the cookie
}

您可以详细了解Cookie的确切内容:

http://www.quirksmode.org/js/cookies.html

以及如何阅读和写作。

此外,您的HTML和JavaScript中存在一些语法错误。请务必仔细查看。需要注意的事项:

  • 确保每个花括号({})都有匹配的开/关。
  • 确保所有HTML属性值都正确用引号括起来。例如,您身体的onload属性似乎缺少引号。

其他提示:

不要尝试一次构建所有内容。从一个简单的任务开始,让它自己工作。例如,从设置/读取cookie开始,而不是担心摇滚。一旦您获得一个特定的工作方式,您可以按照您希望的方式工作,就可以在其上添加更多功能。

答案 1 :(得分:0)

你在setTimeout中有一行代码:

setTimeout("document.getElementById(('rockImg').src = 'images/rock.png';", 5 * 60 * 1000);

它的语法错误。

setTimeout("document.getElementById('rockImg').src = 'images/rock.png';", 5 * 60 * 1000);

什么会更好:

setTimeout(function()
{
    var rockImg = document.getElementById('rockImg');
    if(rockImg != null)
    {
        rockImg.src = 'images/rock.png';
    }
}, 5 * 60 * 1000);

function(){ ... }创建一个匿名函数 它保留为代码而不是文本(这意味着任何语法高亮显示它都会起作用。)并且易于阅读。