Javascript 坚持数字和字母随机化

Javascript 坚持数字和字母随机化,javascript,jquery,Javascript,Jquery,所以我被困在这个脚本上,很难想出如何完成它。我需要它在完成动画后将新的_字符串更改为旧字符串,然后在1或2分钟后使用setInterval将相同的动画从新的旧字符串运行到我将从JSON抓取的新字符串。以下是脚本: $(document).ready(function () { var old_string = "first word"; var new_string = "second word"; while (old_string.length < new_s

所以我被困在这个脚本上,很难想出如何完成它。我需要它在完成动画后将新的_字符串更改为旧字符串,然后在1或2分钟后使用
setInterval
将相同的动画从新的旧字符串运行到我将从JSON抓取的新字符串。以下是脚本:

$(document).ready(function () {
    var old_string = "first word";
    var new_string = "second word";

    while (old_string.length < new_string.length) {
        old_string += " ";
    }
    while (new_string.length < old_string.length) {
        new_string += " ";
    }

    for (i = 0; i < 18; i++) {
        var cell_id = create_cell();
        cycle_characters(old_string.charCodeAt(i), new_string.charCodeAt(i), cell_id);
    }
});

var create_cell = function() {
    var $rack = $("#rack");
    var cell_id = "cell_" + $("#rack .cell").size() + 1;
    $rack.append($("<span class='cell first_run'>").attr("id", cell_id));
    return cell_id;
}

var cycle_characters = function (old, newer, cell_id) {
    // 32 = space; 126 = tilde
    // low-range ASCII only
    var lower_limit = 32;
    var upper_limit = 126;

    var old = parseInt(old);
    var newer = parseInt(newer);

    if (old > upper_limit || old < lower_limit) {
        old = lower_limit;
    }
    if (newer > upper_limit || newer < lower_limit) {
        newer = lower_limit;
    }

    if ("string" != typeof cell_id) {
        cell_id = $(cell_id).attr("id");
    }

    var $cell = $("#" + cell_id);

    $cell.text(String.fromCharCode(old));
    if (newer != old) {
        var call = "cycle_characters(" + (old + 1) + ", " + newer + ", " + cell_id + ")";
        if ($cell.hasClass("first_run")) {
          $cell.removeClass("first_run");
          setTimeout(call, 1000);
        } else {
          setTimeout(call, 20);
        }
    }

}
$(文档).ready(函数(){
var old_string=“第一个单词”;
var new_string=“第二个单词”;
while(旧字符串长度<新字符串长度){
旧字符串+=“”;
}
while(新字符串长度<旧字符串长度){
新_字符串+=“”;
}
对于(i=0;i<18;i++){
var cell_id=create_cell();
循环字符(旧字符串.charCodeAt(i)、新字符串.charCodeAt(i)、单元格id);
}
});
var create_cell=函数(){
var$rack=$(“#rack”);
var cell_id=“cell_”+$(“#rack.cell”).size()+1;
$rack.append($(“”)attr(“id”,cell_id));
返回单元标识;
}
变量周期字符=函数(旧、新、单元格id){
//32=空格;126=波浪形
//仅限低档ASCII码
var下限=32;
var上限=126;
var old=parseInt(old);
var newer=parseInt(更新);
如果(旧的>上限| |旧的<下限){
旧=下限;
}
如果(更新>上限| |更新<下限){
更新=下限;
}
如果(“字符串”!=单元格的类型\u id){
cell_id=$(cell_id).attr(“id”);
}
变量$cell=$(“#”+单元id);
$cell.text(String.fromCharCode(旧));
如果(新的!=旧的){
var call=“cycle_characters(“+(旧的+1)+”、“新的+”、“+cell_id+”);
if($cell.hasClass(“首次运行”)){
$cell.removeClass(“首次运行”);
设置超时(调用,1000);
}否则{
设置超时(调用,20);
}
}
}

这里还有一个

这里有一个更新的示例,它可能正在做您想做的事情:

请注意,
setNewWord
函数显然需要从数组中随机抽取下一个单词,就像我现在做的那样

对于子孙后代,以下是代码:

$(document).ready(function () {
    var old_string = "First Word";
    var new_string = "Second Word";

    function doTheDo() {
        $('#rack').html("");
        while (old_string.length < new_string.length) {
            old_string += " ";
        }
        while (new_string.length < old_string.length) {
            new_string += " ";
        }

        for (i = 0; i < new_string.length; i++) {
            var cell_id = create_cell();
            cycle_characters(old_string.charCodeAt(i), new_string.charCodeAt(i), cell_id);
        }
    }

    function setNewWord() {
        // grab the word from some json
        words = ['Abracadabra', 'Foo bar baz splat', 'Bingo Dingo Ringo']
        new_string = words[Math.floor(Math.random() * words.length)]
        doTheDo();
    }

    function create_cell() {
        var $rack = $("#rack");
        var cell_id = "cell_" + $("#rack .cell").size() + 1;
        $rack.append($("<span class='cell first_run'>").attr("id", cell_id));
        return cell_id;
    }

    function cycle_characters(old, newer, cell_id) {
        // 32 = space; 126 = tilde
        // low-range ASCII only
        var lower_limit = 32;
        var upper_limit = 126;

        var old = parseInt(old);
        var newer = parseInt(newer);

        if (old > upper_limit || old < lower_limit) {
            old = lower_limit;
        }
        if (newer > upper_limit || newer < lower_limit) {
            newer = lower_limit;
        }

        if ("string" != typeof cell_id) {
            cell_id = $(cell_id).attr("id");
        }

        var $cell = $("#" + cell_id);

        $cell.text(String.fromCharCode(old));

        var current = '';
        $('.cell').each(function (el, i) {
            current += $(i).text(); //console.info(i);
        });

        if (current != new_string && newer != old) {
            if ($cell.hasClass("first_run")) {
                $cell.removeClass("first_run");
                setTimeout(function() {cycle_characters(old+1, newer, cell_id);}, 1000);
            } else {
                setTimeout(function() {cycle_characters(old+1, newer, cell_id);}, 20);
            }
        } else if (current == new_string) {
            old_string = new_string;
            setTimeout(function() { setNewWord();}, 3000);
        } 
    }
    doTheDo();
});
$(文档).ready(函数(){
var old_string=“第一个单词”;
var new_string=“第二个单词”;
函数doTheDo(){
$('#rack').html(“”);
while(旧字符串长度<新字符串长度){
旧字符串+=“”;
}
while(新字符串长度<旧字符串长度){
新_字符串+=“”;
}
对于(i=0;i上限| |旧的<下限){
旧=下限;
}
如果(更新>上限| |更新<下限){
更新=下限;
}
如果(“字符串”!=单元格的类型\u id){
cell_id=$(cell_id).attr(“id”);
}
变量$cell=$(“#”+单元id);
$cell.text(String.fromCharCode(旧));
无功电流='';
$('.cell')。每个(函数(el,i){
当前+=$(i).text();//控制台.info(i);
});
如果(当前!=新字符串和更新的!=旧字符串){
if($cell.hasClass(“首次运行”)){
$cell.removeClass(“首次运行”);
setTimeout(函数(){cycle_characters(旧的+1,新的,单元格id);},1000);
}否则{
setTimeout(函数(){cycle_characters(旧的+1,新的,单元格id);},20);
}
}else if(当前==新字符串){
旧字符串=新字符串;
setTimeout(函数(){setNewWord();},3000);
} 
}
doTheDo();
});

对不起,我很想帮忙,但你的解释帮不上忙。你想让它做什么,但它现在做得不正确(基于小提琴)?我需要在Setinterval上运行,新的_字符串不断被设置为默认值,然后在Setinterval发生后,它将以JSON的新值运行相同的动画。这肯定让我走上正确的轨道,谢谢!大多数情况下,这将像solari板一样使用,查看是否向json输入了新数据,如果是,则更改为json。谢谢你帮我克服这个减速带。