如何正确循环

时间:2018-09-11 11:33:14

标签: javascript loops input output

这就是我需要做的全部事情

  1. 首先要确认用户是否要添加课程,如果单击“确定”,则会提示用户输入课程,如果单击“取消”,则程序完成。

  2. 当用户给出课程答案时,他们需要为特定课程给出分数。

  3. 完成这两个问题后,需要回头问他们是否要重新添加课程

这是我到目前为止所拥有的

while (true) {
  var entering = confirm('Do you want to enter a Course?');
  if (entering = true) {
    break;
  }

}
var codeInput = '';
var gradeInput = '';
while (true) {
  codeInput = prompt('Enter Course Code');
  if (codeInput.length === 7) {
    break;
  }
  alert('invalid code');
}

gradeInput = prompt('Enter Grade for ' + codeInput + '');


document.writeln('<table border="1">');
document.writeln('<tr>');
document.writeln('<th>Course Code</th>');
document.writeln('<th>Grade</th>');
document.writeln('<tr>');
document.writeln('<th>' +
  codeInput +
  '</th>');
document.writeln('<th>' +
  gradeInput +
  '</th>');
document.writeln('</tr>');

因此,当我询问是否要添加另一门课程时,单击“取消”时,我不确定如何将其循环回到起点,以及如何使程序停止。我也不知道该怎么做,因此,如果用户要求输入另一门课程/年级,如何使它们成为一个单独的答案,以添加到下表中。

我希望这是有道理的,如果有人可以帮助,那就太好了!

ps。这必须全部使用JavaScript而不是HTML来完成。

2 个答案:

答案 0 :(得分:1)

Working fiddle

将您的代码包装在一个函数中,这样您每次输入grad即可再次调用它。

我建议创建表和表头,然后在用户回答提示时附加行:

var number_of_rows = 0;
var table = document.createElement('table');
table.border = '1';

ask();

function ask() {
  var codeInput = '';
  var gradeInput = '';

  var entering = confirm('Do you want to enter a Course?');

  if (!entering) {
    return;
  } else {
    while (true) {
      codeInput = prompt('Enter Course Code');

      if (codeInput.length === 7) {
        break;
      }

      alert('invalid code');
    }
  }

  gradeInput = prompt('Enter Grade for ' + codeInput + '');

  if (number_of_rows === 0) {
    var row = document.createElement('tr');
    var th_1 = document.createElement('th');
    var th_2 = document.createElement('th');
    var txt_1 = document.createTextNode("Course Code");
    var txt_2 = document.createTextNode("Grade");
    th_1.appendChild(txt_1);
    th_2.appendChild(txt_2);
    row.appendChild(th_1);
    row.appendChild(th_2);
    table.appendChild(row);

    number_of_rows++;
  }


  console.log(number_of_rows);

  table = insertRow(codeInput, gradeInput);

  document.body.appendChild(table);
  number_of_rows++;

  ask();
}

function insertRow(codeInput, gradeInput) {
  var row = document.createElement('tr');
  var td_1 = document.createElement('td');
  var td_2 = document.createElement('td');
  var txt_1 = document.createTextNode(codeInput);
  var txt_2 = document.createTextNode(gradeInput);

  td_1.appendChild(txt_1);
  td_2.appendChild(txt_2);
  row.appendChild(td_1);
  row.appendChild(td_2);

  table.appendChild(row);

  return table;
}

答案 1 :(得分:0)

根据此处https://developer.mozilla.org/en-US/docs/Web/API/Window/prompt

  

如果用户单击“取消”按钮,则此函数返回null

因此,您所需要做的就是检查value是否为null以便了解用户是否单击了取消

if (codeInput == null) break