我正在尝试从一个和之后获取值,并在提交时将值转换为cookie。这就是我所拥有的,但我想知道是否有办法实现它,所以我不必为所有变量写出相同的东西。
function submitValues(){
var firstName = document.forms["frm1"]["first_name"].value;
var lastName = document.forms["frm1"]["last_name"].value;
var number = document.forms["frm1"]["phNum"].value;
setCookie("firstName",firstName,365);
setCookie("lastName",lastName,365);
setCookie("number",number,365);
}
答案 0 :(得分:2)
您可以通过在变量中保存对表单的引用来缩短它,如下所示:
var form = document.forms["frm1"];
var firstName = form["first_name"].value;
//...and so on
或者通过循环遍历表单中的所有<input>
元素来进一步缩短它:
var formInputs = document.forms["frm1"].getElementsByTagName("input");
for (var i=0;i<formInputs.length;i++) {
setCookie(formInputs[i].name, formInputs[i].value, 365);
}
答案 1 :(得分:2)
如果要为所有表单元素设置Cookie,请使用DOM2 form.elements
collection:
var els = document.forms.frm1.elements;
for (var i=els.length;i--;){
setCookie(els[i].name, els[i].value, 365);
}
如果您只想要具体,请编写如下代码:
var els = document.forms.frm1.elements;
var cookiesToSet = ['first_name','last_name','phNum'];
for (var i=cookiesToSet.length;i--;){
var name = cookiesToSet[i];
setCookie(name, els[name].value, 365);
}
在上文中,els[name]
相当于document.forms.frm1.elements[name]
。
通常,JavaScript中每个对象的每个属性都可以通过“点表示法”(foo.bar
)或“括号表示法”(foo["bar"]
)访问。当属性名称不是有效标识符(foo["names[]"]
或foo["12 freakin' whales!"]
)或从变量(foo[name]
或foo["item"+i]
)构造属性名称时,必须使用后者。