新しいフォームが必要になるたびに、フォームを再作成する必要があります。
また、要素を ID で取得しないでください。これは低速の DOM 操作であり、失敗する可能性があります。静的 HTML には ID を使用することをお勧めします。そのため、CSS と Javascript を指定できます。
getElementsByID の代わりに、必要に応じて Javascript コードで参照を保持してください。(送信時にフォームデータを抽出するために必要だと思います)。
些細な例 (ここで jquery を使用して申し訳ありませんが、とにかく共通語です):
var inputs = { givenname: $('<input type="text">')
, surname: $('<input type="text">')
, age: $('<input type="select">')
, gender: $('<select>')
.append($('<option>').text('Female').val(0))
.append($('<option>').text('Male').val(1))
.append($('<option>').text('Other').val(2))
}
var form = $('<div class="myform">');
Object.keys(inputs).forEach(function(k) {
form.append(inputs[k]);
});
function getdata() {
var o = {}
Object.keys(inputs).forEach(function(k) {
o.k = inputs[k].val();
});
return o;
}
popupFunction(form, getdata);
(作成される)関数popupFunction
は、フォームをどこかに移動するだけで(mycontainer.append(form)
)、データを送信する必要があるときに、getdata 関数を使用してデータを抽出します。
私が話した参照はinputs
オブジェクトに保持されていることに注意してください。これらは DOM ノードの直接参照ではなく、jquery オブジェクトへの参照であり、jqueryval()
関数で値を抽出できる DOM ノードを保持します。