2016-07-04 10 views
2

情報(検査情報)が配列に格納され、localstorageを使用して別のjsに渡されるモジュールを作成しています。私が得る問題は、私が.pushを使っていても、以前の試験は常に上書きされるということです。すべての変数は他の場所で定義されています。助けてくれてありがとう。それ以外の場合は、常に&は、以前に保存新しい配列となり、オブジェクトを配列CSSにプッシュする際の問題| JS | HTML

recentexamdb = [] 
document.getElementById("button1").onclick = function() { 
    window.scrollTo(0, 0); 
    document.getElementById("maindiv").style.visibility = "hidden"; 
    document.getElementById("buttondiv").style.visibility = "hidden"; 
    document.getElementById("countdown").style.visibility= "visible"; 
    var yearinput = document.getElementById("yearinput").value; 
    var minuteinput = document.getElementById("minuteinput").value; 
    var hourinput = document.getElementById("hourinput").value; 
    var secondinput = document.getElementById("secondinput").value; 
    var twentyminutes = new Audio('20mins.mp3'); 
    var tenminutes = new Audio('10mins.mp3'); 
    var fiveminutes = new Audio('5mins.mp3'); 
    var timesup = new Audio('timesup.mp3'); 
    var firstalert = document.getElementById("firstalertinput").value; 
    var secondalert = document.getElementById("secondalertinput").value; 
    var thirdalert = document.getElementById("thirdalertinput").value; 
    var readingalert = document.getElementById("readingalertinput").value; 
    var timetotal = (Number(hourinput)*60) + Number(minuteinput) 
    enddate = (new Date().getTime()) + (minuteinput*60000) +(secondinput*1000) + (hourinput*3600000); 
    var examtypeinput = document.getElementById("examtypeinput").value; 
    var hours=0; 
    var minutes=0; 
    var seconds=0; 
    var countdown = document.getElementById("countdown"); 
    var examtype = document.getElementById("examtype"); 

setInterval(function() { 
     var currentdate = new Date().getTime(); 
     var secondsleft = (enddate - currentdate)/1000; 
     // do some time calculations 
     hours = parseInt(secondsleft/3600); 
     secondsleft = secondsleft % 3600; 
     minutes = parseInt(secondsleft/60); 
     seconds = parseInt(secondsleft % 60); 
     if (hours == 0 && minutes == 0 && seconds == 0) { 
      document.getElementById("countdowndiv").style.fontFamily = "Helvetica Neue, Arial, sans-serif" 
      document.getElementById("countdowndiv").style.fontSize = "100%" 
      countdown.innerHTML = "Time is up! Pens down and wait for further instruction" 
      examtype.innerHTML = "If you continue to write, marks may be deducted" 
      var readingtimenow = "No reading time selected" 
      var timetotalnow = ((hours * 60) + minutes) 
      var examinfoobject = { 
      year: yearinput, 
      examtime: timetotalnow, 
      timeofexam: Date(), 
      examtype: examtypeinput, 
      readingtime: readingtimenow 
      } 
      recentexamdb.push(examinfoobject) 
      console.log(recentexamdb) 
      localStorage.setItem("storedexamdb", JSON.stringify(recentexamdb)) 
     } 
}, 1000); 
} 
+0

関連するコード全体を入力してください。 –

+0

recentexamdbを配列として宣言しましたか? – rrd

+0

残りのコードを追加 – maxphat

答えて

0

JSに固有の構文を修正、(指摘に感謝) まず、ローカルストレージ内の既存の値から「recentexamdb」を初期化します。ここでは、コードです値が失われる可能性があります。

recentexamdb=JSON.parse(localStorage.getItem("storedexamdb")); // read already saved values 
recentexamdb.push(examinfoobject); 
localStorage.setItem("storedexamdb",JSON.stringify(recentexamdb)); 

次のページでは、 が役に立ちます。

+0

なぜ角回答ですか?それはjavascriptの質問 –

+0

動作しないようです。 examinfoobjectの後ろに記述したように追加し、プロジェクトの開始時に変数を宣言しました。私はこのエラーが発生します:timermodule.js:319キャッチされないTypeError:nullのプロパティ 'プッシュ'を読み取ることができません。 319行目がrecentexamdb.push(examinfoobject)にありました。 – maxphat

0

アララティの答えのために修正されました。それは、私がローカルストレージのクリックカウンタを設定し、クリックカウンタが> 1だったときに既に保存された値を使用したときに機能しました。

関連する問題