javascript - 随机消失的文本效果 - 使用 jQuery 选择随机 Div

标签 javascript jquery html css css-transitions

我正在处理的事情有奇怪的问题。

这里的引用代码是:JSFIDDLE LINK

只是流程的回顾:

  1. 文档加载完毕,有两段文字。
  2. 运行 jQuery,用于将每个字母放入一个范围内——具有唯一的类号。
  3. Span 上都有 CSS 不透明度过渡。
  4. jQuery 遍历#main 容器中的所有跨度并添加 .change 类来触发不透明度。一旦所有跨度都添加了类,此循环就会结束。

现在我缺少的是一种遍历跨度中所有 div 的方法——并随机开始将每个跨度的不透明度更改为 0。这需要以完全随机的顺序完成——但需要在循环遍历所有跨度后停止。

下面我有一些数学代码——但我不确定为什么它不起作用。

var min = 1;
var max = 400;
var paras = $('#main span');
var random = Math.floor(Math.random() * (max - min + 1)) + min;
paras.hasClass('number' + random).addClass('change');

任何人都可以帮我计算一下——或者帮我想出另一个解决方案,我相信如果可行的话效果会很好。

谢谢!

最佳答案

您始终可以只选择没有 change 类的剩余 span 元素。

jsFiddle Demo

function randomChange() {
    var paras = $('#main span:not(.change)');
    var min = 0;
    var max = paras.length - 1;
    var random = Math.floor(Math.random() * (max - min + 1)) + min;
    $(paras.get(random)).addClass('change');

    if (paras.length > 1) setTimeout(randomChange, 5);
}

如果我们只搜索一次未更改的跨度并从数组中删除更改的元素,我们可以提高效率。

jsFiddle Demo

var paras = $('#main span:not(.change)');

function randomChange() {
    var min = 0;
    var max = paras.length - 1;
    var random = Math.floor(Math.random() * (max - min + 1)) + min;
    $(paras.get(random)).addClass('change');

    // Remove from item from the array
    paras.splice(random, 1);

    console.log("Chose: "+ random + " Out: " + max);
    if (paras.length > 0) setTimeout(randomChange, 5);
}

关于javascript - 随机消失的文本效果 - 使用 jQuery 选择随机 Div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18790612/

相关文章:

javascript欢迎消息框问题

javascript - 显示/隐藏一个 div 有条件地点击另一个 div 中的链接

javascript - 如何获取屏幕上html标签的位置?

javascript - preventDefault() 不会阻止该操作

javascript - react-router 和 Next.js 有什么不同

javascript - 更改输入框也需要在JS中查找是否选中复选框

jquery - 自定义命令的 kendo ui 工具提示

jquery - 为什么我无法绕过函数()内部的悬停()?

php - 无论窗口大小如何,我都需要将背景颜色灰色向下移动以覆盖页面的长度

javascript - 鬼博客查找 View 失败 "index"