0

特定の文字列に一致するタイトルを持つブックマーク フォルダーのフォルダー IDを取り戻そうとしています。

問題は、テキストが同じ場合にフォルダーIDを返さないことです:C

これは私のコードです:

chrome.bookmarks.getTree(function(bookmarks) 
{
  search_for_url(bookmarks, "herpaderp");
});


function search_for_title(bookmarks, title)
{
  for(i=0; i < bookmarks.length; i++)
  { 
    if(bookmarks[i].url != null && bookmarks[i].title == title)
    {
      // Totally found a folder that matches!
      return bookmarks[i].id;
    }
    else
    {
      if(bookmarks[i].children)
      {  
        // inception recursive stuff to get into the next layer of children
        return search_for_title(bookmarks[i].children, title);
      }
    }
  }

  // No results :C
  return false;
}
4

1 に答える 1

1

あなたのsearch_for_title機能には2つの問題があります。

  1. 変数はローカルでi なければなりません。ローカル変数にするには、ステートメントの代わりにvar i = 0を使用する必要があります。i = 0for

  2. search_for_titleは、指定されたタイトルのブックマークが見つからない場合に戻りますfalseが、次のアイテムを調べる必要があるため、 を再帰的に呼び出した後、ブックマークが見つかった場合にsearch_for_titleのみ戻りreturn値を返します。それ以外の場合は、 を返す代わりに検索を続行する必要があります。false

正しく動作することをテストしたコードは次のとおりです。

function search_for_title(bookmarks, title)
{
  for(var i=0; i < bookmarks.length; i++)
  { 
    if(bookmarks[i].url != null && bookmarks[i].title == title)
    {
      // Totally found a folder that matches!
      return bookmarks[i].id;
    }
    else
    {
      if(bookmarks[i].children)
      {  
        // inception recursive stuff to get into the next layer of children
        var id = search_for_title(bookmarks[i].children, title);
        if(id)
          return id;
      }
    }
  }

  // No results :C
  return false;
}
于 2012-12-19T09:52:44.983 に答える