0
这是我有史以来所面临的最恼人的问题:为什么我的全局变量不被另一个函数看到?
var appslst = [];
function f1()
{
chrome.management.getAll(function(lst)
{
appslst = lst;
});
}
function f2() // this function isn't working!!
{
var l = appslst.length;
var ind = 0;
while(ind < l)
{
document.getElementById("here").value = document.getElementById("here").value.concat(String(ind), ". ", appslst[ind].name, "\n");
ind += 1;
}
}
function f3()
{
f1();
f2();
}
我相信appslst
- 因为它是一个globla变量 - 应该在这两个功能可见f1()
和f2()
,但上面的代码不工作,我不知道为什么。
另外,我曾尝试下面的代码(它的工作):
var appslst = [];
function f1()
{
chrome.management.getAll(function(lst)
{
appslst = lst;
var l = appslst.length;
var ind = 0;
while(ind < l)
{
document.getElementById("here").value = document.getElementById("here").value.concat(String(ind), ". ", appslst[ind].name, "\n");
ind += 1;
}
});
}
任何帮助是非常赞赏:)提前:)
更多的细节 感谢: 我学习如何为Google Chrome构建扩展程序。 我已经下载了样本:http://code.google.com/chrome/extensions/examples/extensions/app_launcher.zip 从这个链接:http://code.google.com/chrome/extensions/samples.html 我看了一遍代码,发现我写的代码相同,只是它工作正常! 下面是我在谈论的部分:
function onLoad()
{
chrome.management.getAll(function(info)
{
var appCount = 0;
for (var i = 0; i < info.length; i++) {
if (info[i].isApp) {
appCount++;
}
}
if (appCount == 0) {
$("search").style.display = "none";
$("appstore_link").style.display = "";
return;
}
completeList = info.sort(compareByName);
onSearchInput();
});
}
那么为什么样本的代码是woking?注意'completeList'也是一个全局变量。感谢您的帮助:) – joker
如果您的意思是最后一个代码示例 - 它们也在传递给'getAll'的函数中进行迭代,并且当时您想要迭代的数据可用。 – pimvdb
只有2个最后的问题:1.如果我想将数据复制到全局变量,我应该怎么做? 2.有什么链接可以学到更多? – joker