2013-04-28 27 views
1

我做了這個簡單的腳本在YouTube上搜索視頻,但有這個代碼的一個奇怪的回聲:我如何在JavaScript中修補這個不需要的和奇怪的迭代?

var nPageToken = response.nextPageToken; 
if (nPageToken){ 
    $('#moreButton').css('display','block'); 
    $('#moreButton').click(function(){ 
     searchRequest('', nPageToken); 
    }); 
} else { 
    $('#moreButton').css('display','none'); 
} 

,創建一個奇怪的效果時,點擊「更多結果」頁面的底部4或5次。 這是complete code,請嘗試home page並在底部的「更多按鈕」上單擊四次或五次,然​​後看到searchrequest的迭代使用相同pageToken我無法理解爲什麼,你能幫助我嗎?謝謝

+0

是在searchRequest函數內的代碼?這可以解釋它(每次調用該函數都會添加一個新的點擊處理程序)。 – bfavaretto 2013-04-28 17:44:57

+0

是的。請原諒我的無知,簡單來說,意味着什麼?我是否需要將它放在searchRequest之外?順便說一句,我沒有抓住它。 – 2013-04-28 17:51:57

回答

0

考慮到你在評論中的說明,你不能在searchRequest函數中調用$('#moreButton').click(...),因爲這是另一個調用searchRequest。這是怎麼回事:

  1. searchRequest被稱爲首次。如果nPageToken是真實的(即,非空,未定義,假或0),則將添加到#moreButton的點擊處理程序,以便當單擊該按鈕時調用searchRequest

  2. 單擊按鈕,調用searchRequest。但是,如果if (nPageToken)通過,那麼您將添加第二個點擊處理程序,因此下一次點擊該按鈕將會調用searchRequest兩次

  3. 如果再次點擊該按鈕,將發生同樣的事情,並且searchRequest將在以下點擊被調用4次。依此類推,呈幾何級數增長...

的解決方案似乎是外移searchRequest這一部分:

$('#moreButton').click(function(){ 
    searchRequest('', nPageToken); 
}); 
+0

謝謝你很多時間,現在它工作,我也明白爲什麼。什麼樣的小菜,我叫?! – 2013-04-28 18:19:32

+0

好樣的,因爲你真的想了解*爲什麼*! :)很高興幫助你! – bfavaretto 2013-04-28 18:22:00

相關問題