2016-11-03 4 views
0

複数の入力を追加する際に問題があります。私は項目と値のリストを読んでいて、Javascript(POST)でそれらを提出したいが、なぜこれが動作したくないのかわからない。私は最終的に私はこの思い付いた、いくつかの方法で試してみましたが、それはそれを反復処理し、エラーをスローしたいdoensn't:複数の入力をJavascriptで提出するために追加する

var form = document.createElement("form"); 
form.action = "submitform.php"; 
form.method = "post"; 
form.target = "_blank"; 
input = []; 

var kvarray = document.getElementsByClassName('ua_mattext'); 

    for (var i = 0; i < kvarray.length; i++) { 

     var fieldname = kvarray[i].id; 
     var fieldvalue = kvarray[i].value; 

     input[i] = "input_" + i; 
     document.createElement(input[i]); 
     input[i].type = "hidden"; 
     input[i].name = fieldname; 
     input[i].value = fieldvalue; 
     form.appendChild(input[i]); 
    } 
    document.body.appendChild(form); 
    form.submit(); 

私が間違って何をしているのですか?

+0

brusharr.length ???? 'document.createElement(input [i]);'は何もしていません。それは魔法のように入力を配列に更新するのではなく、 '' – epascarello

+0

の要素がありません。kvarrayはノードリスト(要素ノードを含む配列のようなオブジェクト)を返します。 'kvarray [i]'は与えられた要素ノードを参照します - 名前ではありません。 –

+0

第1回:kvarrayの代わりにbrusharrを繰り返します。なぜ??第2の:fieldnameのふりをするものは、テキストではなくノードオブジェクトです。 3番目:input [i]はテキストであり、入力ではありません。それを見直して、あなたの質問を書き換えてください。 – sergio0983

答えて

0

は、あなたがこの行程度

input[i] = "input_" + i; 

何も言わないときは、実際に入力されたHTML要素を作成します。代わりに、このような何かをすることができます

input[i] = <input type="hidden" name="${fieldname}" value="${fieldvalue}"> 

これはまた、3つの行の後に置き換えるという追加の利点があります。

p.s:

var input = [] 

p.p.sを:あなたも言って最初に入力を宣言すべきかkvarrayへとあなたの仮定を確認する必要があります[i]は、に等しいです。後続の行でkvarray [i] .valueを実行している場合、kvarray [i]が文字列になることは疑いがあります。これは入力のname属性をそれに等しく設定するために必要なものです。

+0

しかし、 '< ... >'を配列に追加すると、面倒なことになるでしょう。 – Fusseldieb

1

私はそれを自分で考え出しました。まず、input変数を正しく宣言していませんでした(最初は "var"を忘れてしまった)

第2に、入力にdocument.createElement()を設定していませんでした。

第3に、無効な入力input_1,input_2の名前を付けました。唯一のものはinputです。

これで動作します。以下は訂正コードです:

var form = document.createElement("form"); 
form.action = "submitform.php"; 
form.method = "post"; 
form.target = "_blank"; 
var input = []; 

var kvarray = document.getElementsByClassName('ua_mattext'); 

    for (var i = 0; i < kvarray.length; i++) { 

     var fieldname = kvarray[i].id; 
     var fieldvalue = kvarray[i].value; 

     input[i] = "input_" + i; 
     input[i] = document.createElement("input"); 
     input[i].type = "hidden"; 
     input[i].name = fieldname; 
     input[i].value = fieldvalue; 
     form.appendChild(input[i]); 
    } 
    document.body.appendChild(form); 
    form.submit(); 
関連する問題