【发布时间】:2015-01-20 14:50:45
【问题描述】:
所以我有一个工作了 6 个小时的任务。我应该使用 JavaScript 创建一个 cookie 并在网站的用户个人资料页面上显示 cookie 信息。
在尝试此操作时,我编写了一堆代码,理想情况下,我想使用表单上的提交按钮将信息最初保存为 cookie,然后在查看者返回网络时显示相同的信息页。反复失败,我只是将信息放入 cookie 中。所以只要它有效,我不在乎它是如何运作的,在提交时,或者我插入的信息。
下面是 JavaScript:
<script type="text/javascript" language="javascript">
function setCookie(cookieName, cookieValue, cookiePath, cookieExpires){
cookieValue = escape(cookieValue);
if (cookieExpires == ""){
var nowDate = new Date();
nowDate.setMonth(nowDate.getMonth() + 6);
cookieExpires = nowDate.toGMTString();
}
if (cookiePath != ""){
cookiePath = ";Path=" + cookiePath;
}
document.cookie = cookieName + "=" + cookieValue + ";expires=" + cookieExpires + cookiePath;
}
setCookie("cookieFirstName", "George", "", "");
setCookie("cookieLastName", "MaGoo", "", "");
setCookie("cookieEmail", "gMaGoo@gmail.com", "", "");
setCookie("cookieTelNumber", "4095555545", "", "");
setCookie("cookieBirthdate", "12/19/2004", "", "");
setCookie("cookieCity", "Westend", "", "");
setCookie("cookieState", "California", "", "");
function getCookie(cookieFirstName){
var cookieValue = document.cookie;
var cookieStartsAt = cookieValue.indexOf(" " + cookieName + "=");
if (cookieStartsAt == -1){
cookieStartsAt = cookieValue.indexOf(cookieName + "=");
}
if (cookieStartsAt == -1){
cookieValue = null;
} else {
cookieStartsAt = cookieValue.indexOf("=", cookieStartsAt) + 1;
var cookieEndsAt = cookieValue.indexOf(";", cookieStartsAt);
if (cookieEndsAt == -1){
cookieEndsAt = cookieValue.length;
}
cookieValue = unescape(cookieValue.substring(cookieStartsAt, cookieEndsAt));
}
return cookieValue;
}
function yummyCookie(){
var cFirst = getCookie("cookieFirstName");
if (cFirst != null){
document.getElementById("firstname").value = cFirst;
}
var cLast = getCookie("cookieLastName");
if (cLast != null){
document.getElementById("lastname").value = cLast;
}
var cEmail = getCookie("cookieEmail");
if (cEmail != null){
document.getElementById("email").value = cEmail;
}
var cTelNumber = getCookie("cookieTelNumber");
if (cTelNumber != null){
document.getElementById("telnumber").value = cTelNumber;
}
var cBirthdate = getCookie("cookieBirthdate");
if (cBirthdate != null){
document.getElementById("birthdate").value = cBirthdate;
}
var cCity = getCookie("cookieCity");
if (cCity != null){
document.getElementById("city").value = cCity;
}
var cState = getCookie("cookieState");
if (cState != null){
document.getElementById("state").value = cState;
}
}
</script>
此信息已放置在标签中。网站的正文如下所示:
<body onLoad="yummyCookie()">
<div class="wrapper">
<header class="center" id="banner">
<h1>Lindsey's Pet Picture Paradise</h1>
</header>
<aside id="menu" class="floatleft">
<nav>
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="businessprofile.html">Business Profile</a></li>
<li><a href="userprofile.html">User Profile</a></li>
</ul>
</nav>
</aside>
<div id="content" class="center">
<h1 id="pageheader">User Profile</h1>
<form id="userprofile">
<table>
<tr>
<td><label for="firstname">First Name: </label></td>
<td><input type="text" id="firstname"></td>
</tr>
<tr>
<td><label for="lastname">Last Name: </label></td>
<td><input type="text" id="lastname"></td>
</tr>
<tr>
<td><label for="email">Email: </label></td>
<td><input type="email" id="email"></td>
</tr>
<tr>
<td><label for="telnumber">Telephone Number: </label></td>
<td><input type="tel" id="telnumber"></td>
</tr>
<tr>
<td><label for="birthdate">Birthdate: </label></td>
<td><input type="date" id="birthdate"></td>
</tr>
<tr>
<td><label for="city">City: </label></td>
<td><input type="text" id="city"></td>
</tr>
<tr>
<td><label for="state">State: </label></td>
<td><select id="state">
<option value="al">AL</option>
<option value="ak">AK</option>
<option value="az">AZ</option>
<option value="ar">AR</option>
<option value="ca">CA</option>
<option value="co">CO</option>
<option value="ct">CT</option>
<option value="de">DE</option>
<option value="fl">FL</option>
<option value="ga">GA</option>
<option value="hi">HI</option>
<option value="id">ID</option>
<option value="il">IL</option>
<option value="in">IN</option>
<option value="ia">IA</option>
<option value="ks">KS</option>
<option value="ky">KY</option>
<option value="la">LA</option>
<option value="me">ME</option>
<option value="md">MD</option>
<option value="ma">MA</option>
<option value="mi">MI</option>
<option value="mn">MN</option>
<option value="ms">MS</option>
<option value="mo">MO</option>
<option value="mt">MT</option>
<option value="ne">NE</option>
<option value="nv">NV</option>
<option value="nh">NH</option>
<option value="nj">NJ</option>
<option value="nm">NM</option>
<option value="ny">NY</option>
<option value="nc">NC</option>
<option value="nd">ND</option>
<option value="oh">OH</option>
<option value="ok">OK</option>
<option value="or">OR</option>
<option value="pa">PA</option>
<option value="ri">RI</option>
<option value="sc">SC</option>
<option value="sd">SD</option>
<option value="tn">TN</option>
<option value="tx">TX</option>
<option value="ut">UT</option>
<option value="vt">VT</option>
<option value="va">VA</option>
<option value="wa">WA</option>
<option value="wv">WV</option>
<option value="wi">WI</option>
<option value="wy">WY</option>
</select></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Save Your Information!"></td>
</tr>
</table>
</div>
<footer>Safe and friendly place to share your love of your pets with others! Design by Lindsey Schreiner.<br /> Forget your user name or password? <a href="##">Click here for help</a>.</footer>
</div>
</body>
我不知道我是否放错了地方,或者我错过了一些愚蠢的东西,但我已经找到了尽可能多的地方。如果有人可以帮我看看我错过了什么,我真的很感激,谢谢。
【问题讨论】:
-
不确定您的问题出在哪里,但也许您必须等待 javascript 才能加载页面内容?我的意思是将整个 js 包裹在
document.addEventListener("DOMContentLoaded", function(event) { //do work }); -
@andrusieczko - 他们已经在
<body>标签的 onload 处理程序中这样做了。 -
您在浏览器错误控制台中看到任何脚本错误吗?
-
我在控制台中没有任何错误,老实说,当我在浏览器中测试它时,我只是得到......空白。这让我有点恼火。它是否需要在活动的网络服务器上才能真正保存为 cookie?
标签: javascript html cookies