【问题标题】:JavaScript - How would i add var into an array with prompts and get the average with a buttonJavaScript - 我如何将 var 添加到带有提示的数组中并通过按钮获取平均值
【发布时间】:2017-01-31 23:03:26
【问题描述】:

这是我的代码。我知道这是错误的,但我需要一些帮助来启动提示列表。我的目标是用一个按钮获得 4 个标记,然后你输入并将它放在一个数组中。然后它会被平均,并显示一个警报。

<html>
  <head>
    <title>Quiz</title>
  </head>
  <body>
    Average your marks
    <button onclick="myFunction()">Start</button>
    <script type="text/javascrypt">
      var student = []

      var student[0] = prompt("Name:");
      var student[1] = prompt("mark=");
      var student[2] = prompt("mark=");
      var student[3] = prompt("mark=");
      var student[4] = prompt("mark=");
      var student[5] = student[1] + student[2] + student[3] + student[4] / 4;

      function myFunction() {
        if (confirm(student) == true)
      }
    </script>
  </body>
</html>

【问题讨论】:

  • 查看您的开发控制台(在大多数浏览器中为 F12)。控制台应该直接为您指出的代码中仍然存在错误。此外,您不应该将var 放在除第一个对学生的引用之外的任何前面。您只使用var 来定义一个变量。在其他用法中,变量已经定义,您只是在使用它。

标签: javascript arrays prompt


【解决方案1】:

我实际上认为你快到了:

将每个avArray 更改为student。并第一次来var student = []

编辑: 也写function而不是fuction

编辑 2 最后:因为你使用var 你定义了一个变量。所以只使用varvar student = []

var student[0] 错误,因为已经定义了学生。所以使用student[0] =

因为prompt 总是返回一个字符串,您想使用Number 使其成为可以计算的数字。

所以你的最终代码看起来像这样:

var name = prompt("Name:");
var grades = [];
grades[0] = Number(prompt("mark="));
grades[1] = Number(prompt("mark="));
grades[2] = Number(prompt("mark="));
grades[3] = Number(prompt("mark="));
var average = (grades[0] + grades[1] + grades[2] + grades[3]) / 4;

function myFunction() {
  confirm(name + ": " + average)
}
Average your marks: 
<button onclick="myFunction()">Start</button>

【讨论】:

  • @MichaelWong 也写function 而不是fuction
  • 如果我希望按钮启动整个过程并在插入所有信息后自动弹出平均值,我会怎么做
  • @MichaelWong 在确认之前将其放入 myFunction
【解决方案2】:

您要确保添加的是 int 值,而不是 String 值 - 这是 prompt 的返回结果。

试试这个:

// Forces the user to input an int by retrying until an int is input
function intPrompt(msg) {
    while (true) {
        var num = parseInt(prompt(msg));
        if (!isNaN(num)) return num;
    }
}

下面的代码将从用户那里读取 4 个标记并对其进行平均:

alert((intPrompt('mark 1') + intPrompt('mark 2') + intPrompt('mark 3') + intPrompt('mark 4')) / 4);

【讨论】:

    【解决方案3】:

    不少错误,以下是我目前发现的一些错误:

    <script type="text/javascrypt">
    

    正确拼写javascript

    var student[0] = prompt("Name:");
    

    您仅在第一次定义学生时使用 var,将其从学生的下一次出现中删除。

      if (confirm(student) == true)
    

    Student 是一个数组,而不是字符串。您需要以某种方式将其转换为字符串以用于确认 AFAIK。

     var student[5] = student[1] + student[2] + student[3] + student[4] / 4;
    

    我刚刚测试了这条线,平均不能正常工作,你需要防止连接,也许是适当的括号。

    【讨论】:

      【解决方案4】:

      平均值的计算不是完美的,您尝试将所有内容放入数组中,即使它不属于那里。 查看示例:http://codepen.io/anon/pen/rWxMEP

      <html>
      <head>
      <title>Quiz</title>
      <body>
       Average your marks<button onclick=myFunction()>Start</button>
      <script type="text/javascrypt">
      let name;
      let studentMarks = [];
      const numOfMarks = 4;
      let sumMark = 0;
      let msg;
      let myFunction = function() {  
          name = prompt("Name");
          if (name.length !== 0){
              for(i = 0; i < numOfMarks; i++){
                  msg = "Enter mark (" + parseInt(parseInt(numOfMarks)-parseInt(i) )+" left)";
                  studentMarks[i] = prompt(msg);
                  sumMark += parseFloat(studentMarks[i]);
              }
              alert(name + "'s average mark is "+ sumMark/numOfMarks);
          }
      }
      </script>
      </body>
      </html>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-26
        • 1970-01-01
        • 2022-11-29
        • 2015-01-13
        • 2016-12-30
        • 1970-01-01
        相关资源
        最近更新 更多