0

所以我想要一个基于数组元素动态创建的按钮,但是在尝试将参数传递给 onclick 函数时遇到错误

function bringforward(maincourse){
  var newdiv = document.createElement('div');
  newdiv.id="Current class" 
  newdiv.style="background-color:#207420;height:440px;width:440px";

for(var i = 0;i<maincourse.gradingareas.length; i++){

 var gradeplace = document.createElement('p');
 gradeplace.id = grades;
 newdiv.appendChild(gradeplace);

 var button = document.createElement('button');
 button.innerHTML = 'Add Grade';
 button.onclick = function myfunc(){AddGrade(maincourse.gradingareas[i])};
 gradeplace.appendChild(button);
}

AddGrade 函数是一个简单的警报,它将推送给定的值

function AddGrade(toadd){
var newgrade=prompt("Please enter a grade scaled up to 100 points","0 - 100");
if (newgrade!=null){
  toadd.grades.push(newgrade);
  }
}

课程和评分区“对象”:

function Course(name, gradingareas, finalgrade) {
    this.name = name;
    this.gradingareas = gradingareas;  //array of gradingareas
    this.finalgrade = finalgrade;
}
function GradingArea(name, weight, grades){
    this.name = name;
    this.weight = weight;
    this.grades = grades;  //array of grades
}

我认为将函数包装在 onClick 中可以解决范围问题,但我在 Addgrade 中收到错误消息,说它正在尝试访问未定义变量的字段。谢谢您的帮助

4

0 回答 0