我正在使用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