【问题标题】:incremental counter and array.sort增量计数器和 array.sort
【发布时间】:2015-05-12 12:30:16
【问题描述】:

有谁知道为什么我在 (for(p=0; p

< HTML>
  < !Foundation Page for building our Javascript programs>
    < HEAD>
      < TITLE>The Foundation Page
        < /TITLE>
          <SCRIPT LANGUAGE="JavaScript">
            var number;

            function main() {
              start()
              totalscore()
              leaderboard()
            }

            function start() {
              var ask
              var name1
              var name2
              var name3
              var name4
              var name5




              ask = prompt("How many people are playing")
              if (ask == 3) {
                name1 = prompt("What is the first player's name?")
                name2 = prompt("What is the second player's name?")
                name3 = prompt("What is the third player's name?")
                number = 3
              }
              if (ask == 4) {
                name1 = prompt("What is the first player's name?")
                name2 = prompt("What is the second player's name?")
                name3 = prompt("What is the third player's name?")
                name4 = prompt("What is the forth player's name?")
                number = 4
              }
              if (ask == 5) {
                name1 = prompt("What is the first player's name?")
                name2 = prompt("What is the second player's name?")
                name3 = prompt("What is the third player's name?")
                name4 = prompt("What is the forth player's name?")
                name5 = prompt("What is the fifth player's name?")
                number = 5
              }
            }

            function randomnumber() {
              var randomnumber;
              randomnumber = Math.random() * 3;
              return (Math.floor(randomnumber + 0.2));
            }

            function totalscore() {
              var n;
              var p;
              var score = 0;
              var total;

              for (p = 0; p < number; p = p + 1) {
                total = 0
                for (n = 0; n < 10; n = n + 1) {
                  number = randomnumber();
                  if (number == 0) {
                    score = score + 0;
                  } else if (number == 2) {
                    score = score + 2;
                  } else if (number == 3) {
                    score = score + 3;
                  }
                  total = total + score;
                }
                document.write("These's player will have the following score")
                document.write(total + "<br>")

              }

            }

            function leaderboard() {

              var leader = new array(5);

              leader[0] =
                leader[1] =
                leader[2] =
                leader[3] =
                leader[4] =




            }
          </SCRIPT>
          < HEAD>
            < BODY>
              < BODY BGCOLOUR="WHITE">
                < H2>The Foundation Page
                  < /H2>
                    <HR>
                    <SCRIPT LANGUAGE="Javascript">
                      main()
                    </SCRIPT>
                    < /BODY>

                      </HTML>

【问题讨论】:

  • 这是一些丑陋的格式,请修正你的 HTML 标签和缩进。
  • 只是一点,但您的 html 不正确 - 您有 2 个开头的头部标签和 2 个开头的正文标签。除此之外,如果您检查您的控制台,它是否显示任何错误?
  • leader[0]= leader[1]= leader[2]= leader[3]= leader[4]= 是什么?

标签: javascript arrays sorting counter increment


【解决方案1】:

首先,你应该采用一些代码标准:目前你的代码看起来很花哨,所以它不帮助别人审查它......甚至对你没有帮助!

所以你应该考虑以下几点:

  1. 对于 HTML 标签,只能使用小写字母并且不要在里面插入空格:写&lt;html&gt; 而不是&lt; HTML &gt;
  2. 注意遵守HTML语法规则:
    • 不要写&lt; !Foundation Page for building our Javascript programs &gt;之类的评论,而是&lt;!-- Foundation Page for building our Javascript programs --&gt;
    • 删除像&lt;SCRIPT LANGUAGE = "JavaScript"&gt;这样的过时属性:只需写&lt;script&gt;
    • 正确关闭你的&lt;/head&gt;标签(目前写成&lt; HEAD &gt;
    • 不要使用像ìn &lt; BODY BGCOLOUR = "WHITE" &gt; 这样过时的表示属性:改用CSS,在&lt;style&gt; 元素或.css 文件中写入类似body {background-color: white;} 的内容
    • 重复&lt;body&gt;标签没有意​​义
    • 在 javascript 代码中,即使是可选的,也希望始终在每条语句的末尾放置一个分号
    • 与您使用的标准符号保持一致:要么在任何地方都写a=b+c;,要么在任何地方写a = b + c;,但不要混合使用这两种表达方式

现在关于您的问题:除了上面列出的项目之外,即使是简单的一瞥,也有许多原因导致此代码无法工作,至少是您发布的原因。
然后,由于您报告了诸如“number 变量无法识别或未获得预期值”之类的问题,这意味着您的代码工作状态与您发布的不同(或者您使用的是特别宽容的浏览器,我很想知道 :-)。
请在与您的问题所关注的问题相对应的状态下发布代码!

无论如何,这里有几点我建议回顾一下:

  1. 您可以通过 2 种方式简化通用代码结构:
    • 首先不要将javascript分成两部分:您只能有一个唯一的&lt;script&gt;,位于/body&gt;之前并包含您的函数和您的main()call
    • 关于启动过程,不要调用main(),它本身会调用其他函数,而是直接将其他调用作为脚本主体
  2. 我了解到您的leaderbord()功能目前还没有实现,但从未如此保持它的特色,否则整个应用程序将无法运行;至少在全球范围内评论它
  3. 请记住,当变量在函数内部定义时,它只在函数内部知道,而在外部不知道:例如,当您从 start() 函数退出时,所有 nameXvariables 都是无用的
  4. 直接关于您关于number 变量的问题:
    • 首先将其定义为全局变量,将ask()的用户提示结果保存在其中
    • 然后在totalscore()function 中,你有这个值用于循环这个数量的用户,但也用你从randomnumber()function 获得的值覆盖它:显然它不能驱动任何循环过程更长!在这里您**必须使用不同的(局部)变量来保存随机值
  5. 另一方面,ask() 函数可以在几个方面显着缩短(请看下面建议的代码);当number 不是 3、4 或 5,甚至是空或不是数字时,程序应该做什么也缺乏了解
  6. randomnumber() 函数没用,因为它只使用了一次并且不包含一些复杂的代码

这里是根据上面指出的项目以及其他一些小项目增强的代码建议。但请注意,它仍然远非真正出色,不仅在编码风格方面,而且在策略和有效性方面。

<html>
<!-- Foundation Page for building our Javascript programs -->
  <head>
    <title>The Foundation Page</title>
    <style>
body {
  background-color: white;
}
    </style>
    <script>
var number,
    names = start(); // so names can be used further
    totalscore();
    leaderboard();
function start() {
    var names = [];
    number = prompt ("How many people are playing");
  for (var i = 0; i < number; i++) {
    names[i] = prompt("What is the player " + i + "'s name?");
  }
  return names;
}
function totalscore() {
    var total,
      score = 0;
  for(var p = 0; p < number; p++) {
    total = 0;
    for (var n = 0; n < 10; n++) {
      var randomvalue = Math.floor(Math.random() * 3 + 0.2);
      if (randomvalue == 0) {
        score = score + 0;
      }
      else if (randomvalue == 2) {
        score = score + 2;
      }
      else if (randomvalue == 3) {
        score = score + 3;
      }
    total = total + score;
    }
  document.write ("These's player will have the following score: ");
  document.write( total + "<br />");
  }
}
function leaderboard () {
/*
  var leader = new array(5);
  leader[0]= 
  leader[1]= 
  leader[2]= 
  leader[3]= 
  leader[4]= 
*/
}
    </script>
  </head>
  <body>
    <h2> The Foundation Page </h2>
    <hr />
  </body>
</html>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-14
    • 1970-01-01
    • 2016-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多