我知道以前也有人问过和回答过类似的问题,但事实是,即使读了这些问题,我也不知道我需要做什么。
下面的代码来自于一个教程。它显示一些具有打字机效果的文本。这一切都很好。
我已经添加了一个_,它可以像dos光标一样在文本前面移动。
我正在尝试在打字机动画完成后使_ blink。
我知道(或者我应该说“认为”)我需要一个回调来触发makeBlink(),但是我永远也找不到在哪里使用它。
有没有人能帮帮我?
var char = 0;
var caption = "";
function showCaption(obj) {
caption = obj.attr('title');
if(caption)
type();
}
function type() {
$('#caption').html(caption.substr(0, char++));
if(char < caption.length+1)
setTimeout("type()", 150);
else {
char = 0;
caption = "";
}
}
function makeBlink(){
$("#cursor").html('<blink>_</blink>');
}
$(window).load(function() {
showCaption($("#caption_span"));
makeBlink(); // This runs whilst the text is still typing :(
});发布于 2011-08-13 06:45:12
将makeBlink();从您拥有的位置移除,并将其插入此处:
function type() {
$('#caption').html(caption.substr(0, char++));
if(char < caption.length+1)
setTimeout("type()", 150);
else {
char = 0;
caption = "";
makeBlink();
}
}PS。超文本标记语言的<blink>元素非常旧,而且不太受支持。即使是text-decoration: blink也很难得到支持。最好使用与type()函数类似的javascript解决方案。类似于:
function makeBlink(){
var $cur = $('#cursor');
if($cur.html())
$cur.html('');
else
$cur.html('_');
setTimeout(makeBlink, 500);
}或者使用css display或visibility。
此外,您应该在代码中将"type()"更改为type,以避免使用eval。(永远不要将字符串传递给setTimeout)您的教程在那里教会了您一个糟糕的实践。
发布于 2011-08-13 06:45:37
您可以从type()函数中的else分支调用makeBlink。
function type() {
$('#caption').html(caption.substr(0, char++));
if(char < caption.length+1)
setTimeout("type()", 150);
else {
char = 0;
caption = "";
makeBlink();
}
}当您完成定时器设置和输入时,它将执行makeBlink()函数。与以前一样,当您仍在执行计时器并执行更多输入时,将调用您的makeBlink()函数。
https://stackoverflow.com/questions/7047078
复制相似问题