2017-11-16 3 views
0

私は、ユーザーがページに表示されている入力を提出できるようにする簡単なフォームを作成しています。各入力は後に追加されるので、ユーザーが「1」を入力して「submit」をクリックすると、ページに「1」が表示されます。ユーザが「2」を入力すると、「1」の真下に「2」が表示されます。 "1"は削除されません。配列が要素Node.jsをプッシュしない

私はユーザー入力を配列に保存しています。私はその配列を反復してページにユーザー入力を表示します。私が実行している問題は、配列内の何も保存されないため、ユーザー入力をページにレンダリングしようとすると何もレンダリングされません。

/* This is pseudocode */ 
    var list = []; 

    for each value in list 
     add value to page 

    addToList = function() { 
     var value = document.getElementById("userEntry").value; 
     list.push(value); 
    } 

addToList関数は、ユーザーがsubmitをクリックするたびに呼び出されます。私はNode.jsを使用していますが、私は提出するたびにJavaScriptファイルがリフレッシュされ、ページがリロードされ、配列がクリアされるため、これは機能しません。

アレイにユーザー入力の値を保存させる場合はどうすればよいですか。

+0

''ページが更新されますの。ボタンを使用してみてください。 – Lepanto

+0

私の入力タイプではなく、私のボタンタイプがサブミットされました。ボタンタイプも送信されてリフレッシュされますか? – dogdog

答えて

0

@レパントが正しい。 <input type="submit">ページが更新され、状態が失われます。あなたが名前addToListと機能インスタンスへの参照を初期化しているが、この関数を呼び出したことがない

<button onclick="addToList" >submit</button>

+0

私の入力タイプはテキストでした。私のボタンタイプが提出されました。 – dogdog

+0

提出タイプは正確にリフレッシュを引き起こすものです。 –

0

は、データを永続化する

$('#button').click(() => { 
    list.push($('#userEntry').val()); 
})" 
0

ボタン(/要素)jQueryのを使用しようとしてから、 "ヴァル()$( '#のuserEntry')"、あなたはのlocalStorageにデータを保存することができます。

これはどのように行うことができます。

/* This is pseudocode */ 
    var list = []; 

    for each value in list 
     add value to page 

    addToList = function() { 
     var value = document.getElementById("userEntry").value; 
     list.push(value); 
    } 

    onSubmit = function() { 
     //localStorage.setItem('key', 'value'); 
     localStorage.setItem('myList', JSON.stringify(list)); 
    } 

    getList = function() { 
     //localStorage.getItem('key'); 
     list = JSON.parse(localStorage.getItem('myList')); 
    } 
0

:これを試してみてください。

addToList関数内にconsole.logを追加すると、この関数が呼び出されないことがわかります。

代わりに、関数を宣言した後、括弧でそれを呼び出すことによって、それを実行する必要があります。addToList()

関連する問題