首页 > 解决方案 > 将实例分配给我的数组(javascript)。是什么导致了这个错误?

问题描述

我需要将对象的实例分配为数组中的值,但是当我尝试将 let 添加到循环中以收集用户输入时,我收到一条错误消息,指出“[”是一个意外的标记。这对我来说是一种新技术,所以我不确定这是否是制作桌子的实用方法。任何帮助表示赞赏。

<script>
  
  function generateTable() {
    
    var tblStart = "<table>";
    
    //This is the header line for my table.
    var tblMeat = "<tr> <td><b>Name</b></td> <td><b>Attendance</b></td> <td><b>Homework</b></td> <td><b>Midterm</b></td> <td><b>Final</b></td> <td><b>Course Grade</b></td> <td><b>Round Grade</b></td> <td><b>Letter Grade</b></td> </tr>";
    var tblStop = "</table>";
    
    //This determines the number of rows.
    var rowCount = prompt("How many students are in the class?");
    
    //I want to assign instances of Student to this array which will be used to fill the table cells.
    var pupil = [NUMBER(rowCount)];
    
    //This object should process user entries and use them to calculate the total grade, rounded grade, and letter grade.
    function Student(name, attendance, homework, mGrade, fGrade) {
      this.name = name;
      this.attend = attendance;
      this.homewrk = homework;
      this.midter = mGrade;
      this.fingrad = fGrade;
      this.course = function () {
               var attGrade = this.attend * 0.1;
               var hwkGrade = this.homewrk * 0.2;
               var midGrade = this.midter * 0.3;
               var finGrade = this.fingrad * 0.4;
               var combGrade = attGrade + hwkGrade + midGrade + finGrade;
               
               return combGrade.toFixed(2);
               };
      this.round = Math.round(this.course);
      this.letter = function() {
               if(this.course < 60) {
                 return '<p style="color:red;">F</p>';
                 } else if(this.course >= 60 && this.course <= 69.9){
                   return "D";
                   } else if(this.course >= 70 && this.course <= 79.9) {
                     return "C";
                     } else if(this.course >= 80 && this.course <= 89.9) {
                       return "B";
                       } else if(this.course >= 90 && this.course <= 100) {
                         return "A";
                         };
                         };
    }
    
    
    /*This loop should collect user input based on the declared number of students, and assign input values to instances of 
    Student based on which execution of the loop is being run. I am getting an error stating "[" is unexpected for line 79.
    */
    for (var r = 0; r < rowCount; r++) {
    
      var studentN = prompt("Enter student name.");
      var studentA = prompt("Enter student attendance.");
      var studentH = prompt("Enter student homework grade.");
      var studentM = prompt("Enter student midterm grade.");
      var studentF = prompt("Enter student final grade.");
      
      let pupil[r] = new Student(studentN, studentA, studentH, studentM, studentF);
      
    }
    
    
    
    for(var i = 0; i < rowCount; i++) {
      
      tblMeat += "<tr>";
      
      for(var j = 0; j < 8; j++) {
        
        tblMeat += "<td>" + pupil[i].name + "</td><td>" + pupil[i].attend + "</td><td>" + pupil[i].homewrk + "</td><td>" + pupil[i].midter + "</td><td>" + pupil[i].fingrad + "</td><td>" + pupil[i].course() + "</td><td>" + pupil[i].round + "</td><td>" + pupil[i].letter() + "</td>";
      }
      
      tblMeat += "</tr>";
    }
    
    //This just puts it all together.
    var completeTable = tblStart + tblMeat + tblStop;
    
    document.getElementById("placetable").innerHTML = completeTable;
    
  }
</script>

标签: javascripthtmlarraysobjectinstance

解决方案


我通过uglifyJS运行了你的程序。它实际上是为了压缩 javascript 代码,但是当有很多代码要调试时,它就改变了生活。

剧本告诉我:

解析错误:意外标记:punc ([) 第 59 行,第 16 列
let student[r] = new Student(studentN, studentA, studentH, studentM, studentF);

您正在尝试定义一个已经存在的变量。去掉“让”。

对未来的一个小小的建议。


推荐阅读