2011-10-14 71 views
2

我有這個任務來讀取,寫入,啓用cookie,以便用戶名將被存儲在一個變量,然後寫入一個cookie。我的問題是,它看起來像代碼的最後一部分工作。但是,用戶名被假設存儲到變量中的第一部分不起作用,並且我可以看到,當我運行代碼並且前兩個警告框未顯示時。這是假設打開「你好,我是你的寵物搖滾」並且在我最後一次點擊iRock後,圖像會變成一個快樂的iRock。但它沒有發生。我猜是因爲cookie沒有被讀取。有什麼建議麼。這裏是鏈接:http://ciswebs.smc.edu/cis54/tyson_schweidel /iRockChapter3.htm如何啓用Cookie

<!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> 

回答

4

讓我們來分解一下。

如何啓用Cookie

餅乾默認情況下在至少自2000年幾乎所有的瀏覽器啓用雖然你不能依靠啓用cookie,有一個人 - 我認爲這是一個安全的假設一項家庭作業。現在,對於啓用Cookie的而不是,用戶必須將其明確關閉。

讀,寫,啓動cookies使用戶名會被存儲在一個變量,然後寫入到一個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開始,不要擔心岩石。一旦你獲得了一個專門按照你想要的方式工作的功能,就可以在它上面添加更多功能。

+0

+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(){ ... }創建一個匿名函數。
它保留爲代碼而不是文本(這意味着任何語法高亮將在其上工作),並且它易於閱讀。

相關問題