我想将我的标题从默认值替换为"*number* new messages | default"
以下是我的代码,它从默认值更改为1 new messages
,但它永远不会超过1。
title = $('title').text();
regexp = /^(\d+)/
if (title.match(regexp))
$('title').text().replace(regexp, (parseInt("$1")+1).toString())
else
$('title').text('1 New Messages | Default')
答案 0 :(得分:3)
您应该使用函数作为replace
的第二个参数,您还需要设置新值:
var title = $('title').text();
$('title').text(title.replace(regexp, function(m) { return parseInt(m, 10) + 1) }));
而且,像往常一样,当你打电话给parseInt
时,不要忘记基数论点,否则你迟早会感到不快。
答案 1 :(得分:2)
我最近遇到过这个问题,问题是在replace函数的第二个参数中调用一个函数。 $ 1仅在直接在字符串文字中调用时有效,而不是作为函数的字符串参数。
另一个问题是$('title').text().replace(regexp, (parseInt("$1")+1).toString())
将返回一个字符串。您需要将要分配文本的值传递给text()
函数的函数参数,就像在else块中一样。
试试这个:
title = $('title').text();
regexp = /^(\d+)/
if (numToReplace = title.match(regexp))
$(title).text(title.replace(regexp, (parseInt(numToReplace[1])+1).toString()))
else
$('title').text('1 New Messages | Default')
和JSFiddle:http://jsfiddle.net/KFW4G/
答案 2 :(得分:0)
replace
会返回一个新字符串,因此您必须再次使用text
将文本设置为结果。