我正在学习jQuerys animate
并正在构建一个小游戏,用户必须通过点击它来抓住该框,并且每次点击时,得分增加1点,这将在屏幕内动态显示一个<P>
元素。
问题是分数未显示在<p>
。
通过调试应用程序,我可以看到分数实际上是递增的,因此排除了增量中的缺陷。唯一的另一种可能性我认为原因是因为$(document).ready
并没有在每个click
被触发,但这是错误的,因为得分确实增加了。因此,我能想到的唯一解决方案是,我实施.innerHTML
的方式幕后发生了一些事情,但我无法理解它。
我尝试使用value()
代替toString()
,因为我最初认为获取变量value
的实际points
会返回其原始数值,但是没有做任何事情
以下是我遇到问题的jQuery行:
var points = 0;
$(document).ready(function () {
Animate();
div.on('mousedown', function () {
points += 1;
$('#points').innerHTML += points.toString();
});
});
它引用的HTML标记:
<body>
<p id="points">Total points: </p>
<div id="box"></div>
<script src="script.js"></script>
</body>
请注意,积分必须添加到<p>
而非替换<p>
的内容,例如,如果积分增加<p>
会显示Total Points: 1
这是我的JFiddle,可以全面了解问题
答案 0 :(得分:1)
<p id="points">Total points: <span id="total-points"></span></p>
<div id="box"></div>
$('#points').innerHTML += points.toString();
$('#total-points').text(points);
答案 1 :(得分:1)
$(document).ready(function () {
var totPoints="Total points: "; // define a variable with this string value
Animate();
div.on('mousedown', function () {
points += 1;
$('#points').html( totPoints+ points.toString()); // concatenate and add the html
alert("Points" + points.toString());// Wrote this to prove that points score IS being incremented
});
});
答案 2 :(得分:1)
使用innerHtml时,你可以直接使用$('#points').html( "Total points: "+ +points.toString());
工作jsFiddle
答案 3 :(得分:1)
尝试使用$(“#points”)。html(points);这将有效。
使用带有jquery的.innerHTML会产生问题,因为jquery以与纯js不同的方式使用它。