2017-04-16 6 views
0

私は仕事と支払いを表すいくつかの行を持つPDFフォームを持っています。フォーム上の実際のテキストフィールドに配列を束縛する

すべての行は配列である:

var Line = [{ Job: "function", Time: "hours", Wage: "pay" }]; 

functionhourspayは、フォームの各ライン上のテキストフィールドのセットの名前です。

Lineの要素のインデックスをフォームの特定のテキストフィールドに結び付けるにはどうすればよいですか? (Like:Line[10] .Timeは、フォームのテキストフィールドの10行目のテキストフィールドhoursを参照します)

これを行うには巧妙な方法がありますか?

+0

? – guest271314

+0

this.getField(Line [7] .pay).value = 150;などのステートメントを使用して、各テキストフィールドにアクセスできるようにする(内容の読み取り、計算、および変更を行うため)。 – user1513422

+0

'Line [7] .Wage'を意味しますか?なぜオブジェクトのプロパティ名ではなく、objectの値を使ってフォーム要素の '.name 'を参照しようとしていますか? – guest271314

答えて

0

あなたが次に設定、属性を利用してオブジェクトの各プロパティの設定値は、オブジェクトの以前に設定された値に対応する要素に一致するようにセレクタ[attrName^=attrValye]で始まり、<input>又は<select>要素のセットを含む「行」の各親要素を反復することができ一致した要素に対するオブジェクトプロパティの値。

次に、Lineの配列のインデックスとobjectのプロパティを参照して、要素の値を設定できます。結果が期待される何

const form = document.getElementById("lines"); 
 
const fields = lines.querySelectorAll("fieldset") 
 
const Line = Array.from(fields 
 
      , function(field) { 
 
       let o = {Job: "function", Time: "hours", Wage: "pay"}; 
 
       for (let prop in o) 
 
        o[prop] = field.querySelector(`[name^="${o[prop]}"]`);         
 
       return o 
 
      }); 
 

 
Line[0].Job.value = "abc"; 
 
Line[1].Time.value = 123;
<form id="lines"> 
 
    <fieldset> 
 
    <input name="function[0]" type="text"> 
 
    <input name="hours[0]" type="number"> 
 
    <input name="pay[0]" type="number"> 
 
    </fieldset> 
 
    <fieldset> 
 
    <input name="function[1]" type="text"> 
 
    <input name="hours[1]" type="number"> 
 
    <input name="pay[1]" type="number"> 
 
    </fieldset> 
 
</form>

+0

提示されたアイデアをありがとう。しかし、数百行の場合、これはやや面倒です。私は、Line配列の新しい要素を初期化して設定するときに、その場でテキストフィールドを作成する方向に何かを考えていました。私はちょうどその場でテキストフィールドを作成する方法を知りません、ページ上に配置するようにプログラムでページ上に配置するなど – user1513422

+0

@ user1513422元の質問は動的に要素を作成する方法を尋ねません。 http://stackoverflow.com/help/how-to-askを参照してください。同じプロセスを使用して、 'Array.from()'コールバックの中で 'document'への要素の作成と追加を置き換えることができます。 – guest271314

+0

'o [prop] = document.createElement(" input "); o [prop] .name = prop +" ["+ form.querySelector(" fieldset ")。 form.querySelector( "fieldset")[form.querySelector( "fieldset")。length -1] .appendChild(o [prop]) ' – guest271314

関連する問題