2012-05-14 5 views
0

나는 from과 then에서 값을 가져 오려고하며 제출 될 때 값을 쿠키로 변환합니다. 이것이 내가 가진 것입니다. 그러나 모든 변수에 대해 똑같은 것을 쓰지 않아도되도록 방법이 있는지 알고 싶었습니다.양식 요소의 쿠키 설정

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

나는 모든 변수에 대해 같은 것을 쓰는 방법을 모르겠습니다. 세 변수는 세 개의 고유 한 값을 가질 가능성이 큽니다. "똑같은"문제는 어디에서 발생합니까? –

+0

저는 firstName, lastName 및 number 대신 값으로 쿠키를 설정해야하는 필드가 더 많아 질 것이라고 생각합니다. 그래서 질문은 "모든 양식 필드를 순환하여 양식의 각 필드에 해당 값을 가진 쿠키를 만드는 방법이 있습니까?" 각 값을 위에서 설명한대로 변수로 선언하지 않아도됩니다. – sbeliv01

+0

예, sbeliv01이 옳았습니다. 나는 그 질문을 잘 해내 지 못했습니다. 매개 변수를 사용하여 수행 할 수있는 방법이 있습니까? 내가 [[ "frm1"] [ "first_name"]. value;'와 같은 것을 가지고 있고 따옴표 안에 매개 변수가 있으면 작동하지 않습니다. – user1290426

답변

2

당신은 모든 양식 요소에 대한 쿠키를 설정하려면

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])에서 속성 이름을 만들 때 후자를 사용해야합니다.

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); 
}