javascript - 如何将数组元素组合到最后的一个警报框中

标签 javascript

我有一个程序可以计算学生在类(class)中的百分比,并且需要将最终输出全部放在一个框中。但是我的程序目前对每个学生都有警报框,我该如何解决这个问题?

这是代码

<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]);
    }

我有一个程序可以计算学生在类(class)中的百分比,并且需要将最终输出全部放在一个框中。但是我的程序目前对每个学生都有警报框,我该如何解决这个问题并将所有学生的姓名放入一个最终警报框中?

最佳答案

您会收到单独的警报,因为您在每次迭代时都使用单独的值调用 alert。一种解决方案是将名称和相应的分数合并到一个新数组中,并在此数组上调用一次alert。在新数组上使用 join('\n') 会将数组元素转换为字符串,并用换行符分隔每个数组元素,以便格式化。只需更改最后一部分:

let roster = [];
for(let y=0; y < names.length; y++) {
    roster.push(names[y] + " - " + scores[y]);
}
alert(roster.join('\n'))

如果您从一开始就将姓名和分数保存在一个数组中(例如花名册),那就更好了。通过这种方式,您可以避免最后的额外迭代。

关于javascript - 如何将数组元素组合到最后的一个警报框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59757932/

相关文章:

JavaScript 网络音频 : cannot properly decode audio data?

javascript - 如何处理 React/Firebase 聊天应用程序中可见/不可见的聊天消息?

javascript - 如果单击复选框或单击其父 div,如何突出显示/取消突出显示 div?

php - 如何获取服务器的时间并将其移植到这个 JavaScript 函数中?

Javascript 作用域错误

javascript - 我只是无法理解 Node.JS,有什么资源和教程可以帮助我吗?

javascript - .选中复选框时加载内容,未选中时删除内容

javascript - 使用 Web Audio API 连接多个声卡输入

javascript - Phantomjs 无法正确捕获网页的屏幕截图

javascript - 为什么 a[c] 覆盖 a[b]?