我在这个函数上收到一条错误消息,告诉我parseInt没有radix参数,即使我将变量moveCount传递给它。我假设这意味着没有将具有id #moveCount的span的值赋给变量moveCount。我在下面标出了我认为问题出现的地方。我试过这行
moveCount = $('span #moveCount').html();
在选择器中使用和不使用单词'span',我得到相同的结果。
function incrementMoveCount() {
//gets the html of the span with id
//moveCount
//turns it into a number
//increments it by one
//sets the html of the span with id moveCount
//to the new move count
var moveCount = 0;
var newMoveCount = 0;
moveCount = $('span #moveCount').html(); # problem here
newMoveCount = parseInt(moveCount);
newMoveCount = newMoveCount + 1;
$('span #moveCount').html('newMoveCount');
}
HTML
<div id="meta">
<h1>Checkers</h1>
<h4>Moves: <span id="moveCount">0</span></h4>
</div>
答案 0 :(得分:11)
如果是span的id,则可以删除空格 - space指定后代..所以你实际上在寻找带有id = moveCount的span的后代
$('span#moveCount').html();
或者,由于您是按ID选择的,因此您无需指定范围,因为ID选择器是最快的 - ID是唯一的,因此它始终会查找具有该ID的第一个元素
$('#moveCount').html();
答案 1 :(得分:1)
尝试删除空格......
moveCount = $('span#moveCount').html();
您的选择器正在选择<{1}} <{strong>> #moveCount
元素
span
的元素
答案 2 :(得分:0)
只能有一个具有给定ID的元素,您不需要指定它是一个范围。
$("#moveCount").html()
如果这不能满足您的需求,那么问题不在jQuery代码中,我们需要看到html。
修改强>
$('#moveCount').html('newMoveCount');
应该是
$('#moveCount').html(newMoveCount);
答案 3 :(得分:0)
如果您按ID获取元素,则不需要标记名称来搜索它。因为,HTML文档理论上应该只有一个具有特定id的元素。因此在你的情况下:$('#moveCount');也应该得到你的元素。我会将代码更改为:
var moveCount = + $('#moveCount').text();
$('#moveCount').text(moveCount + 1);
jquery .text()方法将正确获取span的值,前面的“+”符号将自动将其转换为int。您不需要调用parseInt()。我们可以通过只触发一次jQuery select来进一步扩展它:
var moveCountElement = $('#moveCount');
moveCountElement.text(+ moveCountElement.text() + 1);
希望有所帮助!
答案 4 :(得分:0)
.html('newMoveCount');
表示span的html应该是字符串'newMoveCount'而不是newMoveCount变量的值。跨度和id之间也应该没有空格。总而言之,这应该有效:
function incrementMoveCount() {
var moveCount = 0;
var newMoveCount = 0;
moveCount = $('span#moveCount').html();
newMoveCount = parseInt(moveCount);
newMoveCount = newMoveCount + 1;
$('span#moveCount').html(newMoveCount);
}