2012-09-06 52 views
2

我收到此函數的錯誤消息,告訴我parseInt沒有radix參數,即使我將它傳遞給變量moveCount。我認爲這意味着id爲#moveCount的跨度值沒有被分配給變量moveCount。我在下面標出了我認爲問題出現的地方。我試過這條線jQuery:選擇具有特定ID的跨度

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> 

回答

10

您可以刪除的空間,如果它的跨度的ID - 空間指定後裔..所以你實際上是在尋找跨度的後代一個id = moveCount

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

或者由於您是通過ID選擇的,您不需要指定範圍,因爲ID選擇器是最快的 - ID是唯一的,因此它將始終查找具有該ID的第一個元素

$('#moveCount').html(); 
+1

ID的應該是唯一的,但事實並非總是如此。如果您不確定,最好在選擇器中保留span元素。 – Dcortez

+0

@Dcortez雖然不是一個好的做法。根據規範,ID在頁面上應該始終是唯一的https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute –

1

嘗試刪除空間...

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

你的選擇是用一個id選擇一個元素#moveCount一個span元素

0

只能有一個給定id元素,你不需要指定它是一個跨度。

$("#moveCount").html() 

如果不給你你在找什麼,這個問題是不是在jQuery代碼,我們需要看到的HTML。

編輯:

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

應該

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

如果您是通過ID獲取元素,你並不需要搜索它的標記名稱。因爲,HTML文檔在理論上應該只有一個具有特定ID的元素。因此在你的情況下:$('#moveCount');也應該讓你的元素。我會改變的代碼是:

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

了jQuery的.text()方法會得到正確的跨度和前面的「+」號會自動將其轉換爲int值。你不需要調用parseInt()。我們可以通過射擊jQuery的選擇只是一次進一步speeden起來:

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

希望幫助!

0
.html('newMoveCount'); 

意味着span的html應該是字符串'newMoveCount'而不是newMoveCount變量的值。 span和id之間也不應有空格。總之,這應該工作:

function incrementMoveCount() { 
    var moveCount = 0; 
    var newMoveCount = 0; 
    moveCount = $('span#moveCount').html(); 
    newMoveCount = parseInt(moveCount); 
    newMoveCount = newMoveCount + 1; 
    $('span#moveCount').html(newMoveCount); 
}