Javascript在此代码后停止工作

时间:2013-12-08 18:54:26

标签: javascript jquery

我已经为类似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);
});

4 个答案:

答案 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或浏览器中的等效内容了解有关调试此类问题的详情。一旦你看到错误,它很清楚是什么线导致了这个问题。

顺便提一下,在添加了您要引用的元素之后,代码会执行。如果它们可能不存在,你需要进行代码检查,不管它是一个好习惯。

http://jsfiddle.net/GWj4b/1/

答案 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>

达到你所瞄准的目标。

http://jsfiddle.net/JKp5z/