1

これは非常に単純な質問だと思いますが、重複していると思いますが、多くの Google 検索とスタックオーバーフロー検索はすべて空白になります。

フォームがある場合:

<form name="myForm">
    Data1: <input type='text' name='num1'>
    Data2: <input type='text' name='num2'>
    Data3: <input type='checkbox' name='num1'>
</form>

そして、次のようなネイティブ dom 配列で完全なコンテンツを取得したいと考えています。

document.myForm.allofthecontent

そのようなネイティブdom要素はありますか?

4

2 に答える 2

1

を見てくださいdocument.forms['myForm']。これはHTMLFormElement、標準の要素プロパティと、フォームに関連する追加のメソッドとプロパティを含むオブジェクトです。

また、フォーム内の入力要素を含むゼロ インデックスの配列としても機能します。

これは、これを利用できる 1 つの方法のデモンストレーションです

var f = document.forms['myForm'];
for (var i = 0; i < f.length; i++) {
    console.log(f[i].type.match(/checkbox|radio/) ? f[i].checked : f[i].value);
    //do something with the element's value
}

value要素のタイプによっては、単にor以外のものを使用して値を取得する必要がある場合がありますchecked

編集:コメントで述べたように、私はあなたが望むことをするネイティブ関数を知らないので、独自の関数を書くことを恐れないでください.

以下は、フォーム要素の値を配列で返す関数のデモです。

function getFormValues(form) {
    var ret = [ ];
    for (var i = 0; i < form.length; i++) {
        switch (form[i].type) {
            case 'checkbox':
            case 'radio':
                ret.push(form[i].checked);
                break;
            default:
                ret.push(form[i].value);
                break;
        }
    }
    return ret;
}

window.onload = function() {
    document.getElementsByTagName('button')[0].onclick = function() {
        console.log(getFormValues(document.forms['myForm']));
    };
};

連想配列 (実際にはオブジェクト) として値を返すようにし始めましたが、それが必要な場合は、最初に名前で選択する方がよいことに気付きました。

于 2013-10-11T01:47:54.390 に答える
0

document.myForm.elementsループできるすべてのフォーム要素のコレクションを返します。

var elems = document.myForm.elements;
for (var i = 0; i < elems.length; i++) {
    console.log(elems[i].value);
}

jsFiddle の例

于 2013-10-11T01:51:08.357 に答える