2017-05-08 179 views
0

我有一個點擊處理程序處理這些循環功能Javascript - 如何全局定義變量?

這個火力點AUTH狀態變化決定的下面兩個功能的子路徑。

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

     var BusinessesId = firebase.auth().currentUser.uid; 
     var selectedJob = JobId.value ; 


     var jobref = database.ref('/Jobs/'); 
    jobref.on('value', JobData, errData); 


    var appref = database.ref('/Jobs/' + ClickedJobId + '/Applications/') 
    appref.on('value', ApplicationData, errData); 

    } 
    }) 

功能JobData拉從火力DB /工作/

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 jobCard = ` 
         <div class="thumbnail" id="${key}"> 
          <span class="folder"><span class="file"></span></span> 
          <div class="title" id="Jobs">${Jobs.JobTitle}</div> 
         </div> 
        `; 

       container.innerHTML += jobCard; 
       }) 
      } 

和功能的ApplicationData應該從 '/工作/' + ClickedJobId +拉拉 '/應用/'

function ApplicationData(data) { 
    ........ 
    .... 
    } 
所有條目

我遇到的問題是,我無法弄清楚在另一個函數,特別是ApplicationData中使用ClickedJobId的方法。 ClickedJobId是在Click處理程序中定義的,每當我在applicationData中引用它時都會將其定義爲undefined,那麼如何在ApplicationData中使用ClickedJobId?

+0

您可以使用localStorage來保存您想要在不同位置訪問的值。 – Ken

+1

將'var ClickedJobId =「」;''移到jQeery外部,然後將內部賦值改爲'ClickedJobId = $(this).closest(「div」)。prop('id');' – mplungjan

+0

定義ClickedJobId在所有函數之外與ClickedJobId = 0; (NO VAR) – Roy

回答

1
var ClickedJobId; 

$('.container').on('click', '.folder', function(e){ 
    ClickedJobId = $(this).closest("div").prop('id'); 
    JobId.value = ClickedJobId; 

    alert(ClickedJobId); 
    console.log(ClickedJobId); 

$('.gallery').fadeOut('fast',function() { 
      $('.applications').fadeIn('fast'); 
    }) 
}) 

「定義」一個變量和「聲明」一個變量是有區別的。我建議您使用一些JavaScript教程,這是您將要學習的第一件事情之一。術語是「可變範圍」