2017-05-06 17 views
0

私が気づいた何この enter image description hereは、自分自身を複製し続ける

を表示するJavascriptのループ機能

firebase.auth().onAuthStateChanged((user) => { 
    if (user) { 
     database = firebase.database(); 

     var BusinessesId = firebase.auth().currentUser.uid; 
     var ref = database.ref('/Jobs/'); 
    ref.on('value', ApplicationData, errData); 

    } 
    }) 

     function JobData(data) { 

       var container = document.getElementById('Jobs'); 

       data.forEach(function(JobSnap) { // loop over all jobs 
       var key = JobSnap.key; 
       var Jobs = JobSnap.val(); 
       var newCard = ` 
         <div class="thumbnail" id="${key}"> 
          <span class="folder"><span class="file"></span></span> 
          <div class="title" id="Jobs">${Jobs.JobTitle}</div> 
         </div> 
        `; 
       container.innerHTML += newCard; 
       console.log(key); 
       }) 
      } 

が持っている私はいくつかのためにページを残すたび時間が経過すると、フォルダは乗算されていました。すべてが再び複製されるようなものです。私がそれを残している時間が長くなればなるほど、検索されたデータはより多く複製されます。たとえば、私がウェブページを開いたままにして、約1時間ほど歩き回ったときには、それぞれのフォルダの2つの複製が下に表示されます。これを引き起こしていると私はどのようにそれを停止することができますか?

答えて

1

あなたはこのイベントで関数を呼び出していますので、私の推測では状態が再び変化し、呼び出しが再び行われます。

firebase.auth().onAuthStateChanged() 

とは、あなたがこの

var container = document.getElementById('Jobs'); 
container.innerHTML = ''; 

などのコンテンツをリセットしたり、イベント.onAuthStateChanged()が再び発射される理由の中に見ることができ、コンテナ

container.innerHTML += newCard; 

にサムネイルを追加します。

+0

ここでは、container.innerHTML = ''; – Ola

+0

var container = document.getElementById( 'Jobs');の直後、私は答えがあるように – argoden

関連する問題