2015-05-22 16 views
0

我需要編寫一個函數,該函數可以創建一個介於1和20之間的隨機數組,並在表中打印每個數字。如果它是已經生成的數字的副本,則需要用紅色突出顯示。Javascript - 將數組中的重複項寫入html

我的問題是,在第一個副本已經打印成紅色後,如果有另一個,它不會被打印成紅色。我無法讓它工作一次以上。

下面是輸出:

enter image description here

這裏是我的代碼:

function randomNumberTable(){ 
    // create array with random numbers 
    var nums = new Array(); 
    for(var i = 0; i < 10; i++){ 
     nums[i] = randomNumber(); 
    } 

    // create header row 
    document.writeln("<table border = \"1\">"); 
    document.writeln("<th>Index</th>"); 
    document.writeln("<th>Number</th>"); 

    // if duplicate, print in red, else, black 
    for(var j = 0; j <= nums.length-1; j++){ 
     var isExist = numberExists(nums[j], nums, j); 
     if (isExist){ 
      document.writeln("<tr>"); 
      document.writeln("<td>" + j + "</td>"); 
      document.writeln("<td><font color=\"red\">" + nums[j] + "</font></td>"); 
      document.writeln("</tr>"); 
     } 
     else{ 
      document.writeln("<tr>"); 
      document.writeln("<td>" + j + "</td>"); 
      document.writeln("<td>" + nums[j] + "</td>"); 
      document.writeln("</tr>"); 
     } 
    } 
} 

// generate a random number between 1 and 20 
function randomNumber(){ 
    var randomNum = Math.floor(Math.random()*20) + 1; 
    return randomNum; 
} 

// checking if the number exists 
function numberExists(num, myArray, myIndex){ 
    for(var k = 0; k < myIndex; k++){ 
     if(num == myArray[k]) 
      return true; 
     else 
      return false; 
    } 
} 
+0

'numberExists'總是會在第一次迭代時返回... – Johan

回答

0

改變你的numberExists功能這樣。

function numberExists(num, myArray, myIndex){ 
    for(var k = 0; k < myIndex; k++){ 
     if(num == myArray[k]) 
      return true; 
    } 
    return false; 
} 
+0

哇,我簡直不敢相信我沒有發現那個錯誤!我認爲這是在randomNumberTable()for循環,哈哈。謝謝!! – Andy