Javascript 如何在末尾将数组元素合并到一个警报框中
我有一个程序,计算学生在课堂上的百分比,并需要最终的输出都在一个盒子里。然而,我的程序目前没有针对每个学生的警告框,我如何解决这个问题 这是密码Javascript 如何在末尾将数组元素合并到一个警报框中,javascript,Javascript,我有一个程序,计算学生在课堂上的百分比,并需要最终的输出都在一个盒子里。然而,我的程序目前没有针对每个学生的警告框,我如何解决这个问题 这是密码 <script> function studentName(x) { while(x == '' || x >= 0 || x < 0) { if(x == '') { x = prompt('Cannot leave field blank. Enter
<script>
function studentName(x)
{
while(x == '' || x >= 0 || x < 0)
{
if(x == '')
{
x = prompt('Cannot leave field blank. Enter again');
}
else if (x >= 0)
{
x = prompt('Cannot Enter a number. Enter again')
}
else
{
x = prompt('Cannot Enter a number. Enter again')
}
}
return(x)
}
function studentScore(y)
{
while(y == '' || y > 100 || y < 0 || isNaN(y))
{
if (y == '')
{
y = parseFloat(prompt("Cannot leave field, blank please enter students score"));
}
else if (y > 100 || y < 0)
{
y = parseFloat(prompt("Invalid score, please enter a score 0-100"));
}
else
{
y = parseFloat(prompt("Invalid score, please enter a score 0-100"));
}
}
return(y)
}
function another(z)
{
while(z == '' && z != 'n' && z != 'N' && z != 'y' && z != 'Y')
{
while (z == '' && z != 'n' && z != 'N' && z != 'y' && z != 'Y' )
{
z = prompt('Invalid response, would you like to enter another score Y/N ')
}
while(z == 'n' || z == 'N')
{
Z = prompt('Would you like to enter another student')
}
while (z == 'y' || z == 'Y')
{
z = prompt("Enter another score")
}
}
return(z)
}
var names = []
var scores = []
var redo = true
var anotherName
var redo2
var retry = true
var anotherScore
var retry2
var i = 0
var a = 1
var score = 0
while(redo == true)
{
var studentNames = prompt('Enter student name');
var name = studentName(studentNames);
names.push(name)
while(retry == true)
{
var studentScores = parseFloat(prompt('Enter student score'));
score = score + studentScore(studentScores);
retry = prompt('Enter another score? Y/N');
retry = another(retry); /**/
if(retry == 'y' || retry == 'Y')
{
retry = true
a++
}
else if(retry == 'n' || retry == 'N')
{
retry = false
}
}
score = score / a
scores[i] = score
redo = prompt('Enter another student? Y/N');
redo = another(redo); /**/
if(redo == 'y' || redo == 'Y')
{
redo = true
retry = true
i++;
a = 1
score = 0
}
else if(redo == 'n' || redo == 'N')
{
redo = false
}
}
var message = ""
for(y=0; y < names.length; y++)
{
alert(names[y] + " - " + scores[y]);
}
同样,我有一个程序,计算学生在课堂上的百分比,并需要最终输出都在一个框中。然而,我的程序目前对每个学生都在警报框中执行操作。我如何解决这个问题,并将所有学生的姓名放入最后一个警报框中?您将收到单独的警报,因为您在每次迭代中都使用单独的值调用警报。一种解决方案是将名称和相应的分数组合在一个新数组中,并在此数组上调用alert。在新数组上使用联接“\n”会将数组元素转换为字符串,并用新行分隔每个数组元素,以便格式化。只需将最后一部分更改为:
let roster = [];
for(let y=0; y < names.length; y++) {
roster.push(names[y] + " - " + scores[y]);
}
alert(roster.join('\n'))
如果你从一开始就把名字和分数保存在一个数组中,比如花名册,那就更好了。通过这种方式,您可以避免在最后进行额外的迭代。您是否有一些数据来测试它?我没有任何屏幕截图,但您可以将代码复制粘贴到某种文本编辑器中,例如sublime text save程序并运行它来查看问题。只需点击输入一个学生的任意分数,点击n输入另一个分数y输入另一个学生,然后再输入一个分数并响应n输入另一个分数和另一个学生,它将有多少警报框作为您输入的学生数量,我只需要一个框