2012-07-15 136 views
2

我有看起來像「1個回覆和30個提到」或「3個回覆和1個提及」(顯然具有不同數字)的錨文本。我試圖用jQuery來替換錨文本添加的數字。jQuery在字符串中添加數字

$(document).ready(function() { 
$('header div.comments-link a').each(function(index) { 
    var myreaction = $(this).text().split(" "); 
    $(this).text(myreaction[0]+myreaction[3]); 
}); 
}); 

因此,對於第一個例子,這將是1 + 30使文本替換將是31.對於第二個例子中,這將是3 + 1,因此文本替換將是4。

然而,它似乎並沒有取代實際的文字,似乎也沒有正確地分割數組。隨着頁面的進入,它有時會抓取「1」,但其他時間會抓取「回覆」。

任何想法?

+0

你能告訴我們一些HTML或作出[的jsfiddle(http://www.jsfiddle.net)? – Conner 2012-07-15 04:25:45

回答

3

我想嘗試一個正則表達式和解析數字字符串轉化爲實際的整數:

var myreaction = $(this).text().match(/(\d+) Repl(?:y|ies) and (\d+) Mention(?:s?)/); 
$(this).text(parseInt(myreaction[1], 10) + parseInt(myreaction[2], 10)); 
+0

這與「答覆」或「提及」不符。 – Inkbug 2012-07-15 04:57:37

+0

它現在應該.. – Blender 2012-07-15 04:59:49

+0

證明它的工作原理(稍作修改,使小提琴變得容易):http://jsfiddle.net/pGH6p/ Upvoted,但作爲一個人,仍然沒有成爲流利的正則表達式,並知道其他開發人員誰也不是,對我來說看起來像是希臘人。知道我並不孤單,讓我懷疑正則表達式是一種可維護的解決方案。 – 2012-07-15 05:09:21

2

工作演示http://jsfiddle.net/BxUXX/1/

對於添加2使用parseInt

希望它有助於

代碼

var str = "1 Reply and 30 Mentions"; 

$(document).ready(function() { 
    // $('header div.comments-link a').each(function(index) { 
     var myreaction = str.split(" "); 
     alert(parseInt(myreaction[0]) + parseInt(myreaction[3])); 
    // }); 
});​ 
+0

作爲一個傻笑(閱讀:我沒有真正優化代碼)我採取了這個想法,並擴大它,所以你不必尋找具體的myreaction指數:http://jsfiddle.net/BxUXX/3/ – 2012-07-15 04:59:07

+1

@GregPettit哈哈哈哈 - 哈哈':''你在ICFP 2012年 - 人變得越來越熱!我會保持你的jsfiddle分享':)' – 2012-07-15 05:02:29

+0

不,我不是。一定要保持你的襯衫。 ;) – 2012-07-15 05:12:28

0

試試這個:

$(document).ready(function() { 
    $('header div.comments-link a').each(function(index) { 
    var s = $(this).text().replace(/\D/g, "").split("") 
    $(this).text(parseInt(s[0], 10) + parseInt(s[1], 10)); 
    }); 
});