2017-07-04 2 views
1

私はプログラムを作っていますが、なぜ私はHTMLページに表示されるのはフォームであるのだろうかと思っていますが、1つだけです。順序付けられていないリストの箇条書きリストはどこにあるべきですか?フィールドにユーザー入力を入力しましたが、送信をクリックすると、フィールドにデータが表示されません。ここにコードがあります。私のinnerHTMLメソッドは、私の連絡先フォームにあるものを一覧表示するのになぜ役に立ちませんか?

function getFormElements() { 
    var gather_form_elements = new Array(
     $("#first_name").val(), 
     $("#last_name").val(), 
     $("email").val(), 
     $("#phone_number").val() 
    ); 

    displayValues(gather_form_elements); 
} 

function displayValues(gather_form_elements) { 

    for(i=0; i<gather_form_elements.length; i++) 
    { 
     document.getElementById("contact_info").innerHTML = "<li>" + gather_form_elements[i] + "</li>"; 
    } 
} 
+0

を、私は私がこれにjQueryを使っていることも指摘しなければなりませんボタンは最初の関数を呼び出します$(ドキュメント).ready(関数(){ $( "ボタンを") { getFormElements())((機能をクリックしてください。 }); 。}) –

答えて

1

これはすべての繰り返しで上書きされているためです。このようinnerHTMLを使用する前に、HTMLを蓄積するようにしてください:

var html = ""; 
for(var i = 0; i < gather_form_elements.length; i++) { 
    html += "<li>" + gather_form_elements[i] + "</li>"; 
//  ^^ the += is crucial. If you don't use it, it will just replace the content of html (the innerHTML in your code), we need to use += to append to html instead of overriding it. 
} 
document.getElementById("contact_info").innerHTML = html; 

あなたは、コードの一行のみ使用して同じ結果をacheiveすることができます

document.getElementById("contact_info").innerHTML = 
    '<li>' + gather_form_elements.join('</li><li>') + '</li>'; 
+0

コメントありがとうございました。同じことをやっているようです。コードを見ると、変数を作成し、各繰り返しで新しい値を与えることがすべてのように見えます。すべての繰り返しで同じこと(オーバーライド)を行っているようです。 –

+0

@JustinRoohparvarいいえ、それは同じものではありません。私のバージョンでは、 '='の代わりに '+ ='を使用しています。あなたのコードで '='を '+ ='に置き換えると、それは動作します。私は 'innerHTML'を使う前に' html'を蓄積していますので、多くの時間を使わず、オーバーヘッドを引き起こします。 '+ ='が重要であるというコメントで指摘しているとおりです。 –

+0

私はちょうどあなたの短い結合バージョンを使用し、それは動作します。しかし、現在は画面上で点滅しています(リスト内の正しいデータ)が、すぐに消えています。 –

関連する問題