请在这件事上给予我帮助。用户成功登录后,我想将用户名存储在cookie中。但是,在单击登录按钮后,该表单是未定义的,我无法从中使用addEventListener
属性。结果,没有创建cookie。Chrome浏览器在if
条件下关于loginForm
的错误是未定义的(在createEventListener()
功能原型中)。
index.htm
<form action="results.htm">
<fieldset id="deliveryinfo">
<legend>Site Login</legend>
<label for="usernameinput">Username</label>
<input type="text" id="usernameinput" name="username" />
<label for="passwordinput">Password</label>
<input type="password" id="passwordinput" name="password" />
</fieldset>
<fieldset id="submitbutton">
<input type="submit" id="submitBtn" value="Login" />
</fieldset>
</form>
scripts.js
"use strict";
function processCookie() {
document.cookie = "username=" +document.getElementById('usernameinput').value;
}
function populateInfo() {
if (document.cookie) {
var uname = document.cookie;
uname = uname.substring(uname.lastIndexOf("=") + 1);
document.getElementById('usernameinput').value = uname;
}
}
function handleSubmit(evt) {
if (evt.preventDefault) {
evt.preventDefault();
}
else {
evt.returnValue = false;
}
processCookie();
document.getElementsByTagName('form')[0].submit();
}
function createEventListener() {
var loginForm = document.getElementsByTagName('form')[0];
if (loginForm.addEventListener) {
loginForm.addEventListener("submit", handleSubmit, false);
}
else if (loginForm.attachEvent) {
loginForm.attachEvent("onsubmit", handleSubmit);
}
}
function setUpPage() {
populateInfo();
createEventListener();
}
if (window.addEventListener) {
window.addEventListener("load", setUpPage, false);
}
else if (window.attachEvent) {
window.attachEvent("onload", setUpPage);
}
您需要设置到期日期。如果您不设置有效期,则cookie是会话的&amp;当您离开页面(提交)时,它将被销毁。添加"路径=/"还使Cookie在所有站点页面上都可提供。
function processCookie() {
//cookie lifetime in milliseconds (24 hours)
var date = new Date(new Date().getTime() + 24 * 3600 * 1000);
document.cookie = "username=" +document.getElementById('usernameinput').value+"; path=/; expires=" + date.toUTCString();
}