使用Javascript编写cookies(和cream)代码
我正在做一项作业,我必须使用表单中输入的值编写cookie,但我不知道如何从下拉菜单中获取所选值以保存为cookie Javascript使用Javascript编写cookies(和cream)代码,javascript,cookies,Javascript,Cookies,我正在做一项作业,我必须使用表单中输入的值编写cookie,但我不知道如何从下拉菜单中获取所选值以保存为cookie Javascript /* this function attachs the event handler under both event models */ function addEvent(object, evName, fnName, cap) { if (object.attachEvent) object.at
/* this function attachs the event handler under both event models */
function addEvent(object, evName, fnName, cap) {
if (object.attachEvent)
object.attachEvent("on" + evName, fnName);
else if (object.addEventListener)
object.addEventListener(evName, fnName, cap);
}
function writeCookie(cName, cValue, expDate, cPath, cDomain, cSecure) {
if (cName && cValue != "") {
var cString = cName + "=" + escape(cValue);
if (expDate)
cString += ";expires=" + expDate.toGMTString();
if (cPath) cString += ";path=" + cPath;
if (cDomain) cString += ";domain=" + cDomain;
if (cSecure) cString += ";secure";
document.cookie = cString;
}
}
function saveMailingInfo() {
var expire = new Date();
expire.setFullYear(expire.getFullYear() + 1);
var allFields = document.mailingForm.elements;
for (var i = 0; i < allFields.length; i++) {
if (allFields[i].type == "text") {
writeCookie(allFields[i].id, allFields[i].value, expire);
}
if (allFields[i].nodename == "SELECT") {
writeCookie(allFields[i].id, allFields[i].selectedIndex, expire);
}
if (allFields [i].type == "radio" || allFields[i].type == "checkbox") {
writeCookie(allFields[i].id, allFields[i].checked, expire);
}
}
alert("Registration data saved");
}
addEvent(window, "load", initPage, false);
function initPage(){
document.getElementById("sbutton").onclick = saveMailingInfo;
document.getElementById("favoriteCake").selectedIndex = retrieveCookie("favoriteCake");
}
/*此函数将事件处理程序附加到两个事件模型下*/
函数addEvent(对象、evName、FName、cap){
if(object.attachEvent)
object.attachEvent(“on”+evName,fnName);
else if(object.addEventListener)
object.addEventListener(evName、fnName、cap);
}
函数writeCookie(cName、CVValue、expDate、cPath、cDomain、cSecure){
如果(cName&&C值!=“”){
var cString=cName+“=”+escape(cValue);
如果(截止日期)
cString+=“expires=“+expDate.togmString();
如果(cPath)cString+=“path=“+cPath;
如果(cDomain)cString+=“domain=“+cDomain;
if(cSecure)cString+=“安全”;
document.cookie=cString;
}
}
函数saveMailingInfo(){
var expire=新日期();
expire.setFullYear(expire.getFullYear()+1);
var allFields=document.mailingForm.elements;
对于(变量i=0;i
HTML
艾米丽的蛋糕
输入您的信息,并将其添加到我们的电子邮件列表中,提醒您获得该生日
你想要的蛋糕!记得在艾米丽的蛋糕上,我们的目标是让每个生日都是最好的
第一:
最后:
电邮:
生日(月/日/年):
最喜欢的蛋糕:
奶油
巧克力
香草
红色的天鹅绒
电子邮件的频率:
每月给我发电子邮件
每季度给我发一次电子邮件
在我生日快到的时候给我发电子邮件
要在HTML选择中获取所选项目的值,请使用:
var cake = document.getElementById("favoriteCake");
var cakeValue = cake.options[cake.selectedIndex].value;
我也情不自禁地注意到,当分支只包含一条语句时,大多数if
语句都利用了可选的大括号:
if (object.attachEvent)
object.attachEvent("on" + evName, fnName);
else if (object.addEventListener)
object.addEventListener(evName, fnName, cap);
下面是一个很好的例子,说明了为什么不应该这样做:
if (cPath) cString += ";path=" + cPath;
这使得它看起来像是如果cPath
是true
,那么将执行同一行上的代码,但path=“+cPath
将始终被执行,因为当您省略大括号时,您告诉JavaScript运行时,当代码进入该分支时,只应执行测试后的第一条语句或else
这是一种非常糟糕的做法,最终会导致程序出现错误。始终用大括号括住分支代码:
if (object.attachEvent){
object.attachEvent("on" + evName, fnName);
} else if (object.addEventListener) {
object.addEventListener(evName, fnName, cap);
}
以及:
最后,使用跨浏览器事件连接功能:
/* this function attachs the event handler under both event models */
function addEvent(object, evName, fnName, cap) {
if (object.attachEvent)
object.attachEvent("on" + evName, fnName);
else if (object.addEventListener)
object.addEventListener(evName, fnName, cap);
}
您不仅应该包括花括号,还可以通过切换测试顺序来提高性能。由于attachEvent
仅适用于IE8及以下版本,因此很少有情况下您的测试是正确的,但您每次都会进行测试。如果您切换序列,您将很少需要运行else代码,而现在,您大部分时间都需要运行测试代码和else代码。最后,您只需要一个else
,而不需要else if
,因为如果其中一个事件模型不受支持,那么另一个是-您不需要测试它
function addEvent(object, evName, fnName, cap) {
if (object.addEventListener){
object.addEventListener(evName, fnName, cap);
} else {
object.attachEvent("on" + evName, fnName);
}
}
可以使用“选定索引值”属性获取选定项
将其存储在cookie中的一种方法是:
/* this function attachs the event handler under both event models */
function addEvent(object, evName, fnName, cap) {
if (object.attachEvent)
object.attachEvent("on" + evName, fnName);
else if (object.addEventListener)
object.addEventListener(evName, fnName, cap);
}
function addEvent(object, evName, fnName, cap) {
if (object.addEventListener){
object.addEventListener(evName, fnName, cap);
} else {
object.attachEvent("on" + evName, fnName);
}
}
var cake = document.getElementById("favoriteCake");
var selectedCake = cake.options[cake.selectedIndex].value;
document.cookie = "selected_cake="+selectedCake;