2012-12-18 2 views
0

폴더 아이디 ()이 지정된 문자열과 일치하는 북마크 폴더 중 하나를 가져 오려고합니다.제목별로 기존 북마크 폴더를 찾으시겠습니까?

문제는 텍스트가 같은 경우는 폴더 ID를 다시 반환하지 않습니다이다 :

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; 
} 

답변

1

두 가지 문제가 있습니다 : C

이 내 코드입니다 search_for_title 기능을 사용하십시오.

  1. 변수 i 로컬이어야합니다. 로컬 변수로 만들려면 for 문에서 i = 0 대신 var i = 0을 사용해야합니다.

  2. search_for_title 반환 false가 지정된 제목이 책갈피를 찾을 수 없습니다,하지만 당신은 여전히 ​​있도록 다음 항목으로 볼 필요가 반복적으로, 당신 return 반환 값 북마크는 경우 search_for_title를 호출 한 후 발견되었다. 그렇지 않으면 검색은 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; 
    } 
    
    : 여기

내가 제대로 실행하는 테스트 코드의
관련 문제