无法获取全局变量
Posted
技术标签:
【中文标题】无法获取全局变量【英文标题】:Can't get global variable 【发布时间】:2015-12-09 19:57:53 【问题描述】:这里是window
:
所以现在,当我向下滚动时(孩子们以与上面显示的方式相同的方式出现,一直很长),我看到了我想要的:
但我只是无法访问它。为什么?
这里的代码,在一个位于 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
【问题讨论】:
你什么时候调用这个update_match
函数,从哪里来的? Remember that the console
is lying
你有多个 iframe 吗?
我在 index.php 的底部调用它@Bergi。在index.php文件所在的目录下,js文件夹也是如此。
@LucianDepold 据我所知,但我使用的是 jquery mobile,可能会导致问题吗?
不,我不这么认为
【参考方案1】:
你运行 update_match 太早了。
似乎在您运行 update_match 时,尚未定义全局变量。它们是稍后创建的。但是因为console.log,当时没有回显窗口对象的快照,它显示了全局变量,因为在你的脚本结束时它们被创建并且console.log显示了“完成”的窗口对象。
要解决您的问题,请稍后运行 update_match,无论是在文档准备好之后还是使用 setTimeout 函数并有合理的延迟:
setTimeout(function() update_match(); , 500);
要在文档准备好后运行该函数,请看这篇文章:
jQuery Mobile: document ready vs page events
你可以这样做:
$(document).ready(function()
update_match();
);
【讨论】:
我必须在该函数中传递 PHP 变量,所以我认为唯一的方法是使用 AJAX 调用。但是,所有这些错误捕获让我比 Snorlax 更饿,所以我会在饭后编写代码。谢谢! 好主意卢锡安!实际上,他得到了那个效果,他的必杀技是身体猛击!现在,关于我们的话题,我有一些问题,也许你可以看看:***.com/questions/32554733/…以上是关于无法获取全局变量的主要内容,如果未能解决你的问题,请参考以下文章
我的第一个项目 :处理全局变量(解决模块化后变量无法获取的问题)