0

我是一个 jquery nube,我有这个打字机文本显示我想要的方式,但是当所有单词都被使用时,我需要循环回到开头。任何人都可以帮助我的代码。

这是我所拥有的:

$(function() {
    var ch = 0;
    var item = 0;
    var items = $('#caption li').length;
    var time = 2000;
    var delay = 28;
    var wait = 3000
    var tagOpen = false;

$('#showCaption').css('width', ($('#caption').width()));

function tickInterval() {
    if(item < items) {
        var text = $('#caption li:eq('+item+')').html();
        type(text);
        text = null;
        var tick = setTimeout(tickInterval, time);
    } else {
        clearTimeout(tick);
    }
}

function type(text) {
    time = delay;
    ch++;
    if(text.substr((ch - 1), 1) == '<') {
        if(text.substr(ch, 1) == '/') {
            tagOpen = false;
        }
        var tag = '';
        while(text.substr((ch - 1), 1) != '>') {
            tag += text.substr((ch - 1), 1);
            ch++;
        }
        ch++;
        tag += '>';
        var html = /\<[a-z]+/i.exec(tag);
        if(html !== null) {
            html = html[0].replace('<', '</') + '>';
            tagOpen = html;
        }
    }
    if(tagOpen !== false) {
        var t = text.substr(0, ch) + tagOpen;
    } else {
        var t = text.substr(0, ch);
    }

    $('#showCaption').html(t);
    if(ch > text.length) {
        item++;
        ch = 0;
        time = wait;
    }
}

var tick = setTimeout(tickInterval, time);
});

如果您需要html,请告诉我。

提前致谢

4

1 回答 1

0

只需重新启动您的计数器:

function tickInterval() {
    if (item >= items)
    {
      ch = 0;
      item = 0;
    }

    var text = $('#caption li:eq('+item+')').html();
    type(text);

    setTimeout(tickInterval, time);
}

示例:http ://codepen.io/paulroub/pen/AgsuF

于 2013-10-01T21:18:19.197 回答