我正在使用Google Chrome扩展程序。在弹出的我有以下代码:现在Google Chrome JavaScript数组错误?
var bookmarks = [];
function appendBMTnode(node){
bookmarks.push([node[0].title, node[0].id]);
}
function addchildren(results){
for(x = 0; x < results.length; x++){
bookmarks.push([results[x].title, results[x].id]);
chrome.bookmarks.getChildren(results[x].id, addchildren);
}
}
function getallbookmarks(){
chrome.bookmarks.get('0', appendBMTnode);
chrome.bookmarks.getChildren('0', addchildren);
}
getallbookmarks();
console.debug(bookmarks.length);
console.debug(bookmarks);
,我会假设,第一个命令将发行书签我的#。事实上,当我使用Chrome的调试器并将bookmarks.length添加到监视列表中时,值是418。在调试器的控制台中,我可以编写bookmarks.length,它会给我正确的长度。我可以键入
for(x = 0; x < bookmarks.length; x++){ console.debug(bookmarks[x]); }
我得到每个内部数组的字符串表示形式。但是,原始console.debug(bookmarks.length)
给出了零的输出。如果我将console.debug(bookmarks[0]);
添加到popup.html,它告诉我该值是未定义的。
但是,如果我添加以下getallbookmarks()
(第一或最后一个):
for(x = 0; x < 10; x++){
bookmarks.push(x);
}
然后bookmarks.length将是10日,再428还当我添加以下功能:
function printlen(){
console.debug(bookmarks.length);
}
,然后,如果我补充身体
<a href="#" onclick="printlen()">test</a>
然后我会还得到正确的bookmarks.length
值。
任何线索为什么书签对象不会注册?
请不要忘了'var'来声明局部变量(如上面的“X”)! ! – Pointy 2010-07-06 23:15:13
如果你正在做铬扩展检查http://area51.stackexchange.com/proposals/10910/google-chrome-extensions-webstore?referrer=SDGU8262nOKdp17Pr161Vw2 – Lizard 2010-07-08 14:16:30