у меня есть ошибка в моем методе prompt (), intead получения строки получить нулевое значение - PullRequest
0 голосов
/ 05 марта 2020
var message = "";
var student;

function print(message) {
  var outputDiv = document.getElementById("output");
  outputDiv.innerHTML = message;
}

function getStudentReport(student) {
  let report = "<h2>Student: " + student.name + "</h2>";
  report += "<p>Track: " + student.track + "</p>";
  report += "<p>Points: " + student.points + "</p>";
  report += "<p>Achievements: " + student.achievements + "</p>";
  return report;
}

while (true) {
  var search = prompt('Search student record: type a name [Jody
] (or type "quit" to end)');
  if (search === null || search.toLowerCase() === "quit") {
    break;
  }
  for (var i = 0; i < students.length; i += 1) {
    student = students[i];
    if (student.name === search) {
      message = getStudentReport(student);
      print(message);
    }
  }
}

У меня возникла следующая проблема, я пытаюсь собрать информацию о пользователях через prompt(), как я знаю до сих пор prompt(), по умолчанию она всегда возвращает строку, но в этом случае она возвращает null как вывод.

Если вы хотите увидеть весь процесс, перейдите по этой ссылке

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

Это две строки:

var search = prompt('Search student record: type a name [Jody
 ] (or type "quit" to end)');

Объединение в одну строку.

var search = prompt('Search student record: type a name [Jody] (or type "quit" to end)');

Новая строка (разрыв строки) нарушает ваш код.

Также вы можете использовать интерполяцию `` или \ в конце первой строки для решения.

0 голосов
/ 05 марта 2020

Просто нужно убрать разрыв строки. Посмотрите на фрагмент ниже.

var message = "";
var students = [{
  name: 'Jody',
  track: 2,
  points: 80,
  achievements: 'none'
}];

function print(message) {
  var outputDiv = document.getElementById("output");
  outputDiv.innerHTML = message;
}

function getStudentReport(student) {
  let report = "<h2>Student: " + student.name + "</h2>";
  report += "<p>Track: " + student.track + "</p>";
  report += "<p>Points: " + student.points + "</p>";
  report += "<p>Achievements: " + student.achievements + "</p>";
  return report;
}

while (true) {
  var search = prompt('Search student record: type a name [Jody] (or type "quit" to end)');

  if (search === null || search.toLowerCase() === "quit") {
    break;
  }
  for (var i = 0; i < students.length; i += 1) {
    student = students[i];
    if (student.name === search) {
      message = getStudentReport(student);
      print(message);
    }
  }
}
<div id="output"></div>
...