我已经尝试了所有让我望而却步的方法,但是此循环并没有带来任何运气(尽管我对javascript很陌生)。
提示应提出问题,直到没有输入任何内容。到那时,所有先前输入的“结果”都应被处理。
结果应该看起来像(如果输入第一个提示:'CS A 4',第二个'BB B 3',第三个'CC C 3'..):....仅在第n个提示没有输入后才显示
COURSE GRADE HOURS
CS A 4
BB B 3
CC C 3
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>gpa.html</title>
</head>
<script type="text/javascript">
function getData(){
var input=0,
results=[];
while(input!==""){input = prompt("Enter course name, grade and credit hours (e.g., 'CS3520 A 4' or click OK with no data to terminate.");
input = input.split(" ");
if(input==""){
results.push({
course: input[0].trim(),
grade: input[1].trim(),
creditHours: parseInt(input[2], 10)
});}}
return results;
}
var app = function() {
var result, results,
COLUMN_SEPARATOR = "\t\t";
document.writeln("<pre>");
results = getData();
document.writeln("COURSE" + COLUMN_SEPARATOR + "GRADE" + COLUMN_SEPARATOR + "HOURS");
for (var i = 0, j = results.length; i < j; i++) {
result = results[i];
document.writeln(result.course + COLUMN_SEPARATOR + result.grade + COLUMN_SEPARATOR + result.creditHours);
}
document.writeln();
computeGPA(results);
document.writeln("</pre>");
}
window.onload = app;
</script>
<body>
</body>
</html>
最佳答案
已删除(在拆分下方):if(input=="")
已添加(在拆分上方):if (input === "") { break; }
应该这样做:
function getData() {
var input = 0,
results = [];
while (input !== "") {
input = prompt("Enter course name, grade and credit hours (e.g., 'CS3520 A 4' or click OK with no data to terminate.");
if (input === "") { break; }
input = input.split(" ");
results.push({
course: input[0].trim(),
grade: input[1].trim(),
creditHours: parseInt(input[2], 10)
});
}
return results;
}
var app = function () {
var result, results,
COLUMN_SEPARATOR = "\t\t";
document.writeln("<pre>");
results = getData();
document.writeln("COURSE" + COLUMN_SEPARATOR + "GRADE" + COLUMN_SEPARATOR + "HOURS");
for (var i = 0, j = results.length; i < j; i++) {
result = results[i];
document.writeln(result.course + COLUMN_SEPARATOR + result.grade + COLUMN_SEPARATOR + result.creditHours);
}
document.writeln();
document.writeln("</pre>");
}
但是我认为这将是一个更好的解决方案:
function getData() {
var input = true,
results = [];
while (input) {
input = prompt("Enter course name, grade and credit hours (e.g., 'CS3520 A 4' or click OK with no data to terminate.");
if (!input) { break; }
input = input.split(" ");
results.push({
course: input[0].trim(),
grade: input[1].trim(),
creditHours: parseInt(input[2], 10)
});
}
return results;
}
var app = function () {
var result, results,
COLUMN_SEPARATOR = "\t\t";
document.writeln("<pre>");
results = getData();
document.writeln("COURSE" + COLUMN_SEPARATOR + "GRADE" + COLUMN_SEPARATOR + "HOURS");
for (var i = 0, j = results.length; i < j; i++) {
result = results[i];
document.writeln(result.course + COLUMN_SEPARATOR + result.grade + COLUMN_SEPARATOR + result.creditHours);
}
document.writeln();
document.writeln("</pre>");
}
因为取消的hint()的返回值取决于浏览器。在大多数浏览器中,返回值为null。但是,某些非常老的浏览器(例如IE的早期版本)曾经返回”(空字符串)。
因此,不要使用诸如
if (input != '' && input != null)
之类的东西,而应使用true或false。用户按下确定,但输入字段为空
input === ""
用户键入了一些内容,然后单击“确定”(或输入)
input == true
用户按下CANCEL
input == null
或input == ""
更新
关于
textarea
事情,尝试这样的事情(我没有测试):textareaContentByLines = textareaContent.split("\n");
for(index = 0; index < textareaContentByLines.length; index++){
input = textareaContentByLines.split(" ");
results.push({
course: textareaContentByLines[index][0].trim(),
grade: textareaContentByLines[index][1].trim(),
creditHours: parseInt(textareaContentByLines[index][2], 10)
});
}
关于javascript - Javascript循环-无法解决这一问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31225767/