2016-06-08 161 views
0
<script> 
    $(document).ready(function(){ 
    var names = ['Hannah', 'Lucy', 'Brenda', 'Lauren', 'Mary']; 
    var liked = []; 
    var disliked = []; 

     while(names.length > 0){ 

      document.getElementById('demo').innerHTML = names[i]; 
      function likeOrDislike(choice){ 
      if(choice == 'Like') 
      { 
      liked.push(names[0]) 
      names.splice(0, 1) 
      } 
      else if (choice == 'Dislike') 
      { 
      disliked.push(names[i]) 
      names.splice(0, 1) 
      } 

     }; 
    }; 
}); 
    </script> 

我要求while循環繼續,直到數組名稱爲空。 我然後讓用戶每次用數組中的名字替換文本。 然後,我要麼選擇喜歡/不喜歡,然後刪除數組的名字,並重復該過程,直到names數組爲空。這段代碼爲什麼執行無限循環?

然而,當我在瀏覽器中加載它不會因爲我認爲這是停留在一個循環

+1

您需要檢查控制檯是否有錯誤。它會立即告訴你「我沒有定義」。最重要的是,你正在循環中定義你的函數,這是一個非常糟糕的主意 – jmcgriz

回答

3

另外一個未定義的i在評論中指出加載的頁面中,你永遠不會改變names

所有針對names的處理都是在功能function likeOrDislike()內完成的,您從不稱之爲。

所以,這種情況正在發生:

  • 同時有姓名(names >0),那麼這樣做存根
  • 內容......就是這樣。你永遠不會改變名字。
  • ...該功能從未被調用過。

也許你的意思是做這樣的事 - 這只是一個例子,完全假設你想要達到的目標。

$(document).ready(function(){ 
    var names = ['Hannah', 'Lucy', 'Brenda', 'Lauren', 'Mary']; 
    var liked = []; 
    var disliked = []; 

    $('#yourLikeButton').click(function(){ 
    var name = $(this).data('name'); // on your button put data-name="Hannah" 
    var idx = names.indexOf(name); 
    liked.push(names[idx]); // this is if you're playing around with indexes 
    names.splice(idx, 1); // this is if you're playing around with indexes 
    }); 

    // similar for your dislike button  

});