我正在根据分数用不同的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;
我是编码的初学者
答案 0 :(得分:3)
问题在于它始终显示&#34; text5&#34;无论分数是多少。
有两个原因:
score
是一个HTMLElement,而不是一个数字。它是由浏览器创建的自动全局变量,因为您已经给出了元素id="score"
。要访问其值,您需要使用score.value
,这是字符串。您可以通过各种方式将该字符串转换为数字; this answer描述了它们。
您在开始时只运行一次脚本。当score
元素的值发生变化时,没有什么能让它自动运行。你需要故意这样做。搜索&#34; JavaScript事件处理,&#34; &#34; DOM事件处理,&#34;或类似的,看看如何设置DOM事件处理程序。
附注:我不喜欢依赖自动全局变量,尤其是因为浏览器中的全局命名空间令人难以置信地拥挤且某些id
值并不重要得到一个自动全局因为它们会与现有的全局冲突。相反,我建议使用document.getElementById("score")
来获取HTMLElement实例。
答案 1 :(得分:1)
Js不知道改变的html内容,所以你必须检查这个范围内的值是什么:
var score = document.getElementById("score").value;
每次要重置文本时都必须定义分数。
此外,您的脚本在打开页面时只执行一次,因此它将获得默认html的值undefined
,因为您的范围为空。这就是你得到"Text5"
的原因。
如果要动态执行此操作,则必须创建一个事件,例如当用户单击按钮时。