Javascript 坚持数字和字母随机化
所以我被困在这个脚本上,很难想出如何完成它。我需要它在完成动画后将新的_字符串更改为旧字符串,然后在1或2分钟后使用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
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。谢谢你帮我克服这个减速带。