无法获得全局变量

时间:2015-09-13 20:29:59

标签: javascript global-variables undefined global scopes

以下是windowenter image description here 所以现在,当我向下滚动(孩子们以与上面显示的相同的方式出现,一直很长)时,我看到了我想要的东西:enter image description here 但我只是无法访问它。为什么呢?

这里是代码,位于js文件夹中的函数中:

function update_match(slot, match, s) {
    $("#match" + slot + " i").text(match);
    console.log(window);
    console.log(window.saves1);          // undefined
    console.log(window.external.saves1); // undefined
    (slot == 1) ? window.saves1.item = s : window.saves2.item = s;
}

变量的创建方式如下:

function set_global(name, pos, ab, needSave, s) {
    window.saves1 = {item: s};
    window.saves2 = {item: s};
}

在js / main.js文件中。

文件结构如下:

index.php (where the php code runs and calls update_match())
js - main.js
   - read_match.js

1 个答案:

答案 0 :(得分:1)

您过早地运行update_match。

似乎在运行update_match时,尚未定义全局变量。它们是稍后创建的。但是因为console.log在那时没有回显出窗口对象的快照,所以它显示了全局变量,因为在脚本结束时它们被创建了,而console.log显示了"完成了" window对象。

要解决您的问题,请在文档准备好之后运行update_match,或者使用具有合理延迟的setTimeout函数运行update_match:

setTimeout(function(){ update_match(); }, 500);

要在文档准备好后运行该功能,请查看以下文章:

jQuery Mobile: document ready vs page events

您可以通过以下方式完成:

$(document).ready(function() { 

update_match();

});