jQuery 闪烁标题

6

我需要一个闪烁的标题,这段代码应该能够实现,但出现了一些问题。

现在控制台一直显示正确的标题,但是浏览器中的标题没有改变,可能出了什么问题?

var blink = true;

setInterval(function(){
    if(blink){
        $("title").text("test");
        blink = false;
        console.log($("title"));
    }else{
        $("title").text("");
        blink = true;
        console.log($("title"));
    }
}, 1000);

“#title” 指的是 id="title",例如。 "title" 可能不是指 document.title。你能展示一下 <title> 标签的 HTML 定义吗? - Travis J
代码在我的FF11中可以正常工作,当然一个空的<title>只会显示URL,你可能想尝试一些类似<大量空格><点>的东西。 - Wesley Murch
2个回答

6

使用document.title = ... <---

你只是在编辑一个没有任何作用的属性。


尝试这样做:

setInterval(function(){
    var title = document.title;
    document.title = (title == "test" ? "none" : "test");
}, 1000);

请查看此演示,每秒钟将标题从test更改为none。(完整的fiddle

$("title")document.title在这里有什么不同?你说的“你只是编辑一个属性”是什么意思?你的代码可行(至少对我来说是这样),但是你的解释让我感到困惑。 - Wesley Murch
谢谢,但仍然很奇怪的是jQuery的text函数不能完成这项工作。 - Linas
好像我不能将标题设置为空格,如果我将其设置为任何字母,它就可以完美地工作。 - Linas
@Linas 是的,这就是为什么在我的演示中我使用了none和test。我会更新我的答案。 - Naftali
@Neal:是的,我试过了,只要设置一个非空值就可以了。再检查一下,看看是否可以正常工作(使用 OP 的代码,但是设置了非空值,在 jsfiddle 上我遇到了一些问题):http://wesleymurch.com/test/9830886.php (顺便说一句,nmdv)。 - Wesley Murch
显示剩余9条评论

1

使用直接引用:

var blink = true;

setInterval(function(){
var theTitle = document.getElementsByTagName("title")[0];
if(blink){
    theTitle.text = "test";
    //or theTitle.innerHTML = "test";
    blink = false;
}else{
    theTitle.text = "";
    //or theTitle.innerHTML = "";
    blink = true;
}
}, 1000);

1
这根本行不通。你不能将DOM对象设置为字符串。 - Naftali
@Neal 实际上他只是将东西分配给一个变量 :P - Esailija
@Neal - 当然你是正确的,我最初想把内部文本分配给变量theTitle,但不知怎么就忘了。这里有两个设置标题的选项。 - Travis J
@TravisJ,没有名为“text”的DOM对象属性。 - Naftali
1
实际上,HTMLTitleElement确实有.text属性,这里完全没有使用jQuery。jQuery.text将执行.innerText.textContent属性。 - Esailija
@Esailija - 我原以为.text是正确的,因为我之前使用过多次。谢谢你提供的信息,让我知道它确实是正确的。不幸的是,有些人对自己并不好(你知道他们是谁)。 - Travis J

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接