2017-05-08 130 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教程,这是您将要学习的第一件事情之一。术语是“可变范围”