gpt4 book ai didi

Javascript 循环 - 无法弄清楚这一点

转载 作者:行者123 更新时间:2023-12-03 09:39:43 24 4
gpt4 key购买 nike

我已经尝试了我想到的所有方法,但这个循环没有成功(尽管我对 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>");
}

因为取消prompt()的返回值取决于浏览器。在大多数浏览器中,返回值为 null。然而,一些非常古老的浏览器(例如早期版本的 IE)过去常常返回 '' (空字符串)。

因此,不要使用诸如 if (input != '' && input != null) 之类的东西,只需使用 true 或 false。

用户按下“确定”,但输入字段为空input === ""

用户输入内容并点击“确定”(或回车)input == true

用户按下取消input == nullinput == ""

更新

关于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 循环 - 无法弄清楚这一点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31225767/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com