1

我有这个代码:

function noti() {
     document.title = document.title + " 1"
}

setInterval("noti()", 1000)

问题是它输出:

我的标题 1 1 1 1 1 1 1 ..... 无限.... 1

是否有任何可能的方式将其输出为“我的标题 1”

当每次在数据库中发生更新时,noti()函数的用途是,无论从数据库中收集的长度是多少,它将被输出到用户标题栏中

因此,“My title 1”,其中“My title”是用户名,“1”是来自数据库的长度

4

3 回答 3

3

如果你只想执行noti一次,你应该使用setTimeout,而不是setInterval

更新:好的,所以你想noti连续执行但替换后缀而不是每次都重新添加。使用正则表达式替换:

document.title = document.title.replace(/(\b\s*\d+)?$/, " " + num);

看到它在行动

于 2012-05-06T11:26:58.607 回答
2

通常像这样的东西被标记。通常你会看到类似(1) My title.

在这种情况下,这是一个简单的问题:

function noti(num) { // num is the number of notifications
    document.title = document.title.replace(/^(?:\(\d+\) )?/,"("+num+") ");
}
于 2012-05-06T11:28:27.520 回答
2

尝试:

var ttl = document.title; //initalize title
function noti() {
  document.title = ttl + " 1";
  //if you want to continue setting the title 
  //(so periodically repeat setting document.title) 
  //uncomment the following:
  //setTimeout(noti, 1000);
}

//use a function reference here. 'noti()' will
//cause the interpreter to do an eval
setTimeout(noti, 1000); 

看看为什么你不应该使用setInterval

于 2012-05-06T11:30:24.503 回答