Javascript - 如何全局定义变量?

时间:2017-05-08 16:50:54

标签: javascript firebase

我有一个处理这些循环函数的点击处理程序

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

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

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

此firebase身份验证状态更改确定以下两个函数的子路径。

   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从firebase DB / Jobs /

中提取所有条目
 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应该来自&#39; / Jobs /&#39; + ClickedJobId +&#39; / Applications /&#39;

  function ApplicationData(data) {
     ........
     ....
    }

我遇到的问题是我无法找到在另一个函数中使用ClickedJobId的方法,尤其是ApplicationData。 ClickedJobId是在click处理程序中定义的,每当我在applicationData中引用它时都是未定义的,我如何在ApplicationData中使用ClickedJobId?

1 个答案:

答案 0 :(得分: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教程,这是您将要学习的第一件事。术语是“可变范围”