jQuery:选择具有特定id的span

时间:2012-09-06 19:42:41

标签: jquery

我在这个函数上收到一条错误消息,告诉我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>

5 个答案:

答案 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);
}