6

我在这个函数上收到一条错误消息,告诉我 parseInt 没有基数参数,即使我将变量 moveCount 传递给它。我假设这意味着 ID 为 #moveCount 的跨度值未分配给变量 moveCount。我在下面的行中标记了我认为出现问题的地方。我试过这条线

moveCount = $('span #moveCount').html();

在选择器中使用和不使用“跨度”一词,都得到相同的结果。

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

5 回答 5

13

如果它是跨度的 id,您可以删除空间 - 空间指定后代.. 所以您实际上是在寻找 id=moveCount 的跨度后代

$('span#moveCount').html();

或者,由于您是按 ID 选择的,因此您不需要指定 span,因为 ID 选择器是最快的 - ID 是唯一的,因此它将始终查找具有该 id 的第一个元素

$('#moveCount').html();
于 2012-09-06T19:44:27.967 回答
1

尝试删除空间...

moveCount = $('span#moveCount').html();

您的选择器正在选择元素中具有id#moveCount span元素

于 2012-09-06T19:44:48.253 回答
0

给定的 id 只能有一个元素,您无需指定它是一个跨度。

$("#moveCount").html()

如果这不能满足您的需求,那么问题不在 jQuery 代码中,我们需要查看 html。

编辑:

$('#moveCount').html('newMoveCount');

应该

$('#moveCount').html(newMoveCount);
于 2012-09-06T19:45:31.377 回答
0

如果您通过 id 获取元素,则不需要标签名称来搜索它。因为,理论上一个 HTML 文档应该只有一个具有特定 id 的元素。因此,在您的情况下: $('#moveCount'); 也应该给你元素。我会将代码更改为:

var moveCount = + $('#moveCount').text();
$('#moveCount').text(moveCount + 1);

jquery .text() 方法会正确获取 span 的值,前面的 '+' 号会自动将其转换为 int。您不需要调用 parseInt()。我们可以通过只触发一次 jQuery 选择来进一步加快它:

var moveCountElement = $('#moveCount');
moveCountElement.text(+ moveCountElement.text() + 1);

希望有帮助!

于 2012-09-06T19:57:50.607 回答
0
.html('newMoveCount'); 

表示跨度的 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);
}
于 2012-09-06T19:58:27.967 回答