if/else运算符未更改

if/else operators not changing

本文关键字:运算符 else if      更新时间:2023-09-26

我正在根据得分用不同的GameOver文本编码游戏

这是代码:

<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"

感谢您帮助

精度:

  • 所有代码都在索引中。HTML文件

  • 值"score"由以下代码在.JS文件中定义

    //定义变量var播放器,得分,停止,股票行情;

  • 我是编码的初学者

问题是无论分数是多少,它总是显示"text5"

有两个原因:

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

  2. 你正在运行你的脚本,一开始只运行一次。当score元素的值发生变化时,没有任何东西会使它在以后自动运行。你需要有目的地这么做。搜索"JavaScript事件处理"、"DOM事件处理"或类似内容,了解如何设置DOM事件处理程序。


附带说明:我不喜欢依赖自动全局变量,尤其是因为浏览器中的全局名称空间非常拥挤,而且一些id值不会获得自动全局,因为它们会与现有全局变量冲突。相反,我建议使用document.getElementById("score")来获取HTMLElement实例。

Js不知道更改的html内容,所以您必须检查跨度内的值,如下所示:

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

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

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

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