0

fromから値を取得しようとしていますが、送信されたら、値を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);
}
4

2 に答える 2

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);
}
于 2012-05-14T21:38:43.297 に答える
2

すべてのフォーム要素にCookieを設定する場合は、DOM2form.elementsコレクションを使用します。

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])からプロパティ名を作成する場合は、後者を使用する必要があります。

于 2012-05-14T21:41:33.983 に答える