Javascript将变量打印到文件中的控制台而不是函数

时间:2016-06-25 19:56:26

标签: javascript

我有一个JS文件,我初始化这个变量:

var totalSlideNumber = $(".background").length;

在文件范围内。然后我尝试将它打印到下一行的控制台:

var totalSlideNumber = $(".background").length;
console.log($(".background").length);

但这总是打印0.当我在一个函数中打印相同的变量时,我得到3:

function parallaxScroll(evt) {

    console.log($(".background").length);
    ...

为什么值不同于文件范围到功能范围?

1 个答案:

答案 0 :(得分:0)

  

为什么值不同于文件范围到功能范围?

这不是"文件范围"的问题。和"功能范围",它只是在您第一次执行代码的时间和下次执行代码的时间之间发生变化。

具体来说,这段代码:

$(".background")

当该选择器第一次查询DOM时,它找不到任何东西。所以结果的数量是0。稍后再次执行时,它会进行文件匹配。因此,在这种情况下,结果的数量为3

听起来,在 DOM结构完全加载之前,您第一次执行代码是。所以你正在寻找的元素还没有存在。您可以等到DOM结构加载并准备好使用document.ready处理程序:

$(document).ready(function () {
    console.log($(".background").length);
});

或者,更短:

$(function () {
    console.log($(".background").length);
});