2014-06-21 61 views
0

好的,所以我对Javascript是半新的,我正在为朋友大修一个扩展。Javascript可变范围问题嵌套函数

我的问题是,我的chrome.browserAction.getTitle获取正确的数据,但该函数不会将结果传递给主函数,在名为“setBadge”的函数中显示为“undefined”。

function setBadge(status,s) { 
    chrome.browserAction.getTitle({}, function(result){ 
     console.log(result) 
     setBadge(res) 
    }); 

    console.log(s); 
    chrome.browserAction.setTitle({title:("is " + status)}); 

    if (status == "Online" && result == "is Offline") { 
     showOn(); 
     audioNotification(); 
     chrome.browserAction.setBadgeText({text:("On" + "   ")}); 
     chrome.browserAction.setBadgeBackgroundColor({color:([0,255,0,255])}); 
    } 

    if (status == "Offline" && result == "is Online") { 
     showOff(); 
     audioNotification(); 
     chrome.browserAction.setBadgeText({text:("Off" + "   ")}); 
     chrome.browserAction.setBadgeBackgroundColor({color:([255,0,0,100])}); 
    } 
} 

任何帮助,非常感谢。

+1

你有'setBadge()'调用'setBadge()'只有一个参数(它是'undefined')并且一遍又一遍地调用它。这两种情况似乎都不正确。 – jfriend00

+0

您不会显示如何调用发布的代码或初始化或声明* res *的位置。 – RobG

回答

0

所以我首先看到的是两件事。外本身导致无限递归和

2内传递res到setBadge这实际上是不确定的

  1. SetBadge永远不会在这个片段中调用。

+0

尝试传递* res *应该抛出一个引用错误,因为它没有在发布的代码中定义或初始化(尽管可能在别处)。 – RobG