0

控制台在第 5 行和第 8 行显示错误。错误是“未捕获的插入函数参数不是字符串”。任何帮助将不胜感激。谢谢!

$(function() {
var animation = false;
function typed(term, message, delay, finish) {
    animation = true;
    var da = 0;
    term.set_prompt('');
    var interval = setInterval(function() {
        term.insert(message[da++]);
        if(da > message.length) {
            clearInterval(interval);
            setTimeout(function() {
                term.set_command('')
                term.set_prompt(message + ' ');
                animation = false;
                finish && finish();
            }, delay);
        }
    }, delay);
}
$('#fyeah').terminal(function(cmd, term) {
    var finish = false;
}, {
    name: 'test',
    greetings: null,
    onInit: function(term) {
        var msg = "testing";
        typed(term, msg, 150, function() {
            finish = true;
        });
    },
    keydown: function(e) {
        if (animation) {
            return false;
        }
    }
});

});

4

1 回答 1

2

message[da++]不是字符串”的三种情况:

  • message是空字符串
  • (old) IE 不支持括号表示法获取字符串的单个字符,最好使用该.charAt()方法
  • 在循环的最后一次迭代中,da == message.length- 它仅在da已经大于长度时才结束。然而,指数是从零开始的,从0length-1

要修复它,请使用

// init
var da = 0;
var interval = setInterval(function() {
    if (da < message.length) {
        term.insert(message.charAt(da++)); // maybe better move the incrementing
                                           // out, to the end of the loop
    } else {
        clearInterval(interval);
        // teardown / callback
    }
}, delay);
于 2013-03-21T16:20:35.727 回答