缺少一部分字符串 - 不写最后一个字母

时间:2016-06-27 18:30:33

标签: jquery

我想在jquery中使用类型效果。

问题是,它不是写字符串的最后一个字母。

'你好吗?'将离开?

var str = 'how are you?', i = 0, isTag, text;
    (function type() {
    text = str.slice(0, ++i);
    if (text === str) return;
    document.getElementById('m').innerHTML = text;
    var char = text.slice(-1);
    if( char === '<' ) isTag = true;
    if( char === '>' ) isTag = false;
    if (isTag) return type();
    setTimeout(type, 100);
    }());

https://jsfiddle.net/9a8Lbgwc/

3 个答案:

答案 0 :(得分:1)

这是因为在最后一次迭代中没有执行document.getElementById('m').innerHTML = text;

var str = 'how are you?', i = 0, isTag, text;
    (function type() {
    text = str.slice(0, ++i);

    document.getElementById('m').innerHTML = text;
    if (text === str) return;
    var char = text.slice(-1);
    if( char === '<' ) isTag = true;
    if( char === '>' ) isTag = false;
    if (isTag) return type();   

    setTimeout(type, 100);
    }());

答案 1 :(得分:1)

您应该交换以下行:

if (text === str) return;
document.getElementById('m').innerHTML = text;

在最后一次迭代中,您在更新html内容之前存在该函数。

答案 2 :(得分:0)

只需删除

if (text === str) 
    return;