首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么这个变量因函数不同而不同?

为什么这个变量因函数不同而不同?
EN

Stack Overflow用户
提问于 2015-08-06 22:51:47
回答 2查看 58关注 0票数 1

因此,我正在为jquery/javascript制作一个幻灯片插件,目前我正在尝试创建一个具有类名“幻灯片”的所有元素的列表。为此,我在javascript模块的顶部定义了一个全局变量,该变量调用一个函数,该函数(应该)返回类名为“幻灯片”的元素列表。尽管出于某种原因,它返回一个空数组,函数内部和外部,尽管显然有一个名为“幻灯片”的div,但是除了之外,当我在单独的函数中打印模块顶部定义的全局变量时(不是前面提到的),它可以正常工作。

以下是html:

代码语言:javascript
运行
复制
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
    <script type="text/javascript" src="slideshow.js"></script>
</head>

<body>
    <div class="slideshow"></div>
</body>

这里是javascript/jquery模块"slideshow.js":

代码语言:javascript
运行
复制
var slideshows = getSlideshows();

function getSlideshows() {
    var slideshows = document.getElementsByClassName("slideshow");
    console.log(slideshows); // prints []
    return slideshows;
}

console.log(slideshows); // prints []

$(function test1() {
    console.log(slideshows); // prints [div.slideshow], which is correct.
});

知道它为什么要打印不同的价值吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-06 23:17:20

您有两个选项,要么可以将脚本放在页脚中,要么包装脚本,并在文档准备好时告诉它启动:

代码语言:javascript
运行
复制
$( document ).ready(function() {
    var slideshows = getSlideshows();

    function getSlideshows() {
      var slideshows = document.getElementsByClassName("slideshow");
      console.log(slideshows);
      return slideshows;
    }

    console.log(slideshows);
}

否则,您的脚本将在它试图引用的html存在之前触发。

票数 1
EN

Stack Overflow用户

发布于 2015-08-06 23:18:33

<head>部分中的脚本在解析页面主体之前执行,因此当您在前两次显示时,getElementsByClassName返回的HTMLCollection是空的。

文档完全加载后,test1就会运行,元素就会显示出来。这是因为 is live:随着DOM的变化,它会自动更新。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31867061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档