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 に答える