2015-11-13 42 views
1

我是新來的Javascript和我有問題循環我的功能。通過表循環不工作

我想通過表循環並將第二列中的數字轉換爲第三列中的評分。我已經定義了一個函數來將數字等級轉換爲文本(「好」,「壞」,...),然後我在循環中使用它。出於某種原因,轉換對第一行起作用,但在第二行停止。

我在這裏找不到答案,有誰能幫忙嗎?由於

function convert(number) { 
 
     if (number == 1) { 
 
      return convert = "Bad"; 
 
     } else if (number == 2) { 
 
      return convert = "Satisfactory"; 
 
     } else if (number == 3) { 
 
      return convert = "Moderate Good"; 
 
     } else if (number == 4) { 
 
      return convert = "Good"; 
 
     } else { 
 
      return convert = "Excellent"; 
 
     } 
 
    } 
 

 

 

 
     var table = document.getElementById("results"); 
 
     var rows = table.rows; 
 
     var rowcount = rows.length; 
 

 
     console.log(rowcount); 
 

 
     var num = []; 
 
     var txt = []; 
 

 
     for(var i = 1; i < rowcount ; i++) { 
 
     num[i] = parseInt(table.rows[i].cells.item(1).innerHTML); 
 
     txt[i] = convert(num[i]); 
 
     table.rows[i].cells.item(2).innerHTML = txt[i]; 
 
     }
<table id="results"> 
 
    <thead> 
 
     <tr> 
 
     <th>Question number</th> 
 
     <th>Assessment value</th> 
 
     <th>Output text</th> 
 
     </tr> 
 
    </thead> 
 
    <tr> 
 
     <td>Q1</td> 
 
     <td>4</td> 
 
     <td></td> 
 
    </tr> 
 
    <tr> 
 
     <td>Q2</td> 
 
     <td>4</td> 
 
     <td></td> 
 
    </tr> 
 
    <tr> 
 
     <td>Q3</td> 
 
     <td>3</td> 
 
     <td></td> 
 
    </tr> 
 
    <tr> 
 
     <td>Q4</td> 
 
     <td>2</td> 
 
     <td></td> 
 
    </tr> 
 
    <tr> 
 
     <td>Q5</td> 
 
     <td>5</td> 
 
     <td></td> 
 
    </tr> 
 
    </table>

+0

我認爲使用switch語句也會更有效率。 – Dane

回答

1

return語句用法是不正確的。在你的代碼返回值的同時,它也將convert函數引用改爲字符串「Good」,所以它在第二次執行時停止。請檢查下面的修正版本。

function convert(number) { 
 
     if (number == 1) { 
 
      return "Bad"; 
 
     } else if (number == 2) { 
 
      return "Satisfactory"; 
 
     } else if (number == 3) { 
 
      return "Moderate Good"; 
 
     } else if (number == 4) { 
 
      return "Good"; 
 
     } else { 
 
      return "Excellent"; 
 
     } 
 
    } 
 

 

 

 
     var table = document.getElementById("results"); 
 
     var rows = table.rows; 
 
     var rowcount = rows.length; 
 

 
     console.log(rowcount); 
 

 
     var num = []; 
 
     var txt = []; 
 

 
     for(var i = 1; i < rowcount ; i++) { 
 
     num[i] = parseInt(table.rows[i].cells.item(1).innerHTML); 
 
     txt[i] = convert(num[i]); 
 
     table.rows[i].cells.item(2).innerHTML = txt[i]; 
 
     }
<table id="results"> 
 
    <thead> 
 
     <tr> 
 
     <th>Question number</th> 
 
     <th>Assessment value</th> 
 
     <th>Output text</th> 
 
     </tr> 
 
    </thead> 
 
    <tr> 
 
     <td>Q1</td> 
 
     <td>4</td> 
 
     <td></td> 
 
    </tr> 
 
    <tr> 
 
     <td>Q2</td> 
 
     <td>4</td> 
 
     <td></td> 
 
    </tr> 
 
    <tr> 
 
     <td>Q3</td> 
 
     <td>3</td> 
 
     <td></td> 
 
    </tr> 
 
    <tr> 
 
     <td>Q4</td> 
 
     <td>2</td> 
 
     <td></td> 
 
    </tr> 
 
    <tr> 
 
     <td>Q5</td> 
 
     <td>5</td> 
 
     <td></td> 
 
    </tr> 
 
    </table>

+0

非常感謝,很好的解釋。 – MNEBRD

+0

歡迎您:) – rajuGT

0

這是你convert功能指派返回值給一個變量,而不是僅僅將其送回,而該變量具有相同的名稱作爲函數的事實。

當它發生return convert = "whatever"它破壞自己,因爲函數本身實際上只是一個變量。

只需使用return "whatever"