2010-12-12 67 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