我已经为类似cmd控制台的打字效果编写了这段代码。代码本身工作正常,但我放在它后面的任何代码都不起作用。我一直试图弄清楚它已经有一段时间了,而且我很困难。
这是问题的JSFiddle。 http://jsfiddle.net/GWj4b/
/**
* CONSOLE
*/
setInterval(cursorBlink, 500);
function cursorBlink() {
if($('#cursor').css('visibility') == 'hidden'){
$('#cursor').css({'visibility': 'visible'});
} else {
$('#cursor').css({'visibility': 'hidden'});
}
}
var text = $('#type').html();
var text = text.replace(/<br>/g, '_');
$('#type').html('');
$.each(text.split(''), function(i, letter) {
setTimeout(function(){
if(letter == '_'){
$('#type').html($('#type').html() + '<br />');
} else {
$('#type').html($('#type').html() + letter);
}
}, 100 * i);
});
答案 0 :(得分:1)
你没有使用HTML吗?
后
$('#type')
返回undefined
,然后您执行text.replace(/<br>/g, '_');
你不能undefined.replace
,所以它失败了,执行就停止了。
尝试添加该JS代码的html代码
另外,你必须在你的小提琴中添加JQuery,在Frameworks&amp;扩展部分。
请参阅此小提琴http://jsfiddle.net/9748L/
答案 1 :(得分:1)
如果你查看控制台日志,你会看到:Uncaught TypeError: Cannot call method 'replace' of undefined
在您调用替换时未定义文本,因为您要查找的元素不存在。
您可以测试它是否像这样存在
if(text) {
text.replace(/<br>/g, '_');
}
如果遇到像这样的运行时错误,Javascript将停止执行。
请考虑使用Chrome的dev tools或浏览器中的等效内容了解有关调试此类问题的详情。一旦你看到错误,它很清楚是什么线导致了这个问题。
顺便提一下,在添加了您要引用的元素之后,代码会执行。如果它们可能不存在,你需要进行代码检查,不管它是一个好习惯。
答案 2 :(得分:1)
我刚调试它,看起来文本未定义, 所以也许你还没有用html创建元素。
var text = text.replace(/<br>/g, '_');
答案 3 :(得分:0)
实际上,您缺少一些HTML代码,而您尝试操作的文本是undefined
。
您可以添加以下HTML代码,
<span id="type">is this what you try to do????</span><span id="cursor">_</span>
达到你所瞄准的目标。