2010-12-12 30 views
3

使用jQuery,我想從<span>中提取一個數字,並用它來計算一個新值。如何使用jQuery從HTML跨度中提取數字?

<div class="post-100" data-postid="100"> 
    <span class="score">3</span> 
</div> 

我已經得到了普遍的想法,但我想不出如何引用現有的跨度值:

if (response.newvoteid == null) 
{ 
    $(".post-" + $(this).data("postid") + " .score").text(
      parseInt(**EXISTING VALUE + 1 OR -1**)); 
} 

更新:我現在用下面這不計算新值,但只是向文本添加一個數字。例如,<span class="score">3</span>成爲<span class="score">31</span>

var number = $(".post-" + $(this).data("postId") + " .score").text(); 
$(".post-" + $(this).data("postId") + " .score").text(number + 1); 
+1

你爲什麼不寫'$(本).find( '分數')'? – SLaks 2010-12-12 20:20:43

+0

SLaks,好主意。我找到了一種方法來查找分數,但現在它將新數字附加到跨度上,而不是附加計算。看到我的更新,如果這個評論沒有意義。 – Mohamad 2010-12-12 20:24:15

+1

這就是'parseInt()'的用途。否則它認爲你正在進行連接。此外,還有更簡單的方法來更新舊值。 [看我的回答](http://stackoverflow.com/questions/4423750/how-do-i-extract-a-number-from-an-html-span-using-jquery/4423818#4423818)。 – user113716 2010-12-12 20:28:08

回答

4

只是傳遞到.text()一個函數,返回遞增(或遞減)的舊值:

$(".post-" + $(this).data("postid") + " .score").text(function(i, txt) { 
    return (parseInt(txt, 10) + 1); // Returns the old value, 
});          //  plus (or minus) 1. 
0
$(spanId).text(); 

會得到span標記中的值/文本。

所以像:

var number = $(spanId).text(); 

將讓你的價值,那麼你可以,如果它檢查一個有效的數字和分析,只要你喜歡。

var intRegex = /^\d+$/; 

var number = $(spanId).text(); 
if(intRegex.test(number)) { 
...//proceed cuz it's a number 
} 
+0

當你可以使用parseInt時,這是很多額外的工作。 – 2010-12-12 20:34:18

1
<span class="score">3</span> 

你有一個類名已經定義,所以使用類名就可以得到裏面的文字如下這裏

$(.score).text(); 

API

http://api.jquery.com/text/

的上面的代碼可以讓你3

+1

上面的代碼會給你一個語法錯誤 – Eric 2010-12-13 18:36:29

4

parseInt函數()被解析爲像這樣的參數,它需要串一個輔助方法:

parseInt($(".score").text()) 

爲了做一個計算,你現在可以將號碼添加到parseInt函數()的結果:

var newVal = parseInt($(".score").text()) + 1 

它對我不清楚,你要如何選擇範圍。 你能解釋清楚一點嗎?

上面的代碼例如通過它的類來選擇範圍的內容。

+0

一月,跨度選擇根本不是問題。問題在於計算。請參閱更新。 – Mohamad 2010-12-12 20:22:39

+0

你必須在你的文本結果上調用parseInt。之後,你可以做數學。我已經更新了我的答案以顯示添加操作。在你的編輯中,你可以調用字符串數據類型的+操作符(函數text()的結果)。這會將值附加到字符串。 – Jan 2010-12-12 20:27:33