循环通过表不工作

时间:2015-11-13 11:18:49

标签: javascript loops html-table

我是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>

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

这是你的convert函数将返回值赋给变量而不是仅仅返回它们,以及变量与函数同名的事实。

当它return convert = "whatever"时它会自我毁灭,因为函数本身只是一个变量。

只需使用return "whatever"