if / else运算符没有改变

时间:2016-05-02 11:27:58

标签: javascript html if-statement operators

我正在根据分数用不同的GameOver Text编写游戏

以下是代码:

<div id="game-over">
      <h3><font color="orange">Tu as courus <span id="score"></span> mètres.</font></h3>
      <font color="orange"><h1 id="customegotext">oldHeader</h1></font>
      <a href="javascript:void(0)" class="button restart">Ressayer ?</a>
    </div>
  </div>
<script>
    var scoretext;
    if (score < 45) {
        scoretext = "Text1";
    } else if (score > 100 ) {
        scoretext = "Text2";
    } else if (score > 500 ) {
        scoretext = "Text3";
    } else if (score > 750 ) {
        scoretext = "Text4";
    } else {
        scoretext = "Text5";
    }
    document.getElementById("customegotext").innerHTML = scoretext;
</script>

问题在于,无论得分如何,它总是显示“text5”。

感谢您的帮助

精确度:

  • 所有代码都在index.HTML文件中

  • 值“得分”由此代码

    在.JS文件中定义

    //定义变量 var player,score,stop,ticker;

  • 我是编码的初学者

2 个答案:

答案 0 :(得分:3)

  

问题在于它始终显示&#34; text5&#34;无论分数是多少。

有两个原因:

  1. score是一个HTMLElement,而不是一个数字。它是由浏览器创建的自动全局变量,因为您已经给出了元素id="score"。要访问其值,您需要使用score.value,这是字符串。您可以通过各种方式将该字符串转换为数字; this answer描述了它们。

  2. 您在开始时只运行一次脚本。当score元素的值发生变化时,没有什么能让它自动运行。你需要故意这样做。搜索&#34; JavaScript事件处理,&#34; &#34; DOM事件处理,&#34;或类似的,看看如何设置DOM事件处理程序。

  3. 附注:我不喜欢依赖自动全局变量,尤其是因为浏览器中的全局命名空间令人难以置信地拥挤且某些id值并不重要得到一个自动全局因为它们会与现有的全局冲突。相反,我建议使用document.getElementById("score")来获取HTMLElement实例。

答案 1 :(得分:1)

Js不知道改变的html内容,所以你必须检查这个范围内的值是什么:

var score = document.getElementById("score").value;

每次要重置文本时都必须定义分数。

此外,您的脚本在打开页面时只执行一次,因此它将获得默认html的值undefined,因为您的范围为空。这就是你得到"Text5"的原因。

如果要动态执行此操作,则必须创建一个事件,例如当用户单击按钮时。