3

だから私はたくさんのテキストフィールドを持つフォームを持っています。一部のフィールドは関連しており、それらをループして値フィールドの数値を合計する必要があります。

フィールドはすべて異なる名前になっているため、それらを区別できるため、それらを調べる方法がわかりません。

それらをすべて同じIDまたは同じものに設定して、共有プロパティに基づいてループを実行できますか? それらすべてを手動で実行する必要はありませんが、必要に応じて実行できます。

すべてのフィールドがフォーム配列の一部である場合、必要なフィールドがどこで開始および停止し、そのようにループするかを把握できると思いますか? うーん

4

5 に答える 5

6

ネイティブ JavaScript ははるかに単純です。フォーム ノードは、すべての名前付きコントロールの配列であり、属性を持つオブジェクトでもあります。

名前付きコントロールは、HTML5 仕様およびHTML 4.01仕様で説明されています。

W3C ソリューションは非常に洗練されています。

var form = document.querySelectorAll( 'form' )[0];
var total = 0;
for (var i = 0; i < form.length; i++) {
    console.log( form[i] );
    total += parseInt( form[i].value );
}

ライブラリは必要ありません。唯一の欠点はfieldset、フォーム内の s も反復されることです。

于 2014-12-23T21:46:19.397 に答える
2

それらすべてにクラス名を付けます。例えば。class="inputs". それらを配列に追加してから、ループでforループします。

var inputs = document.getElementsByClassName("inputs");
for(i =0; i < inputs.length; i++) 
{
  // whatever you want to do now.
}
于 2013-09-06T15:43:47.960 に答える
-1

セマンティックな HTML を書きたい場合は、関連する<input>フィールドをfieldsetにグループ化し、id を追加してから、次のようにループする必要があります。

var total = 0;
var inputs = document.querySelector('yourFieldsetId').querySelectorAll('input');
for (var i = 0; i < inputs.length; ++i) {
  total += Number(inputs[i].value);
}
于 2015-09-05T23:35:08.453 に答える
-1

質問の言い回しは異なりますが、これは以前に尋ねられました。

すでにtinkerBotによって提供されているものを含む、いくつかのソリューションについては、ここを確認してください

input[] 値を解析して Javascript 配列に入れる方法

于 2013-09-06T15:47:04.397 に答える