【问题标题】:Display an item from a list of items显示项目列表中的项目
【发布时间】:2019-09-25 07:15:34
【问题描述】:

我有一个样本:

link

我希望 "item-extra" 类的项目随机显示在项目列表中。

现在,代码重新排列所有元素。

我希望其余部分保持固定,并且只有具有 "item-extra" 类的那个会被移动到每个页面重新加载。

var ul = document.querySelector('ul');
for (var i = ul.children.length; i >= 0; i--) {
  ul.appendChild(ul.children[Math.random() * i | 0]);
}
.item-extra {
  color: red;
}
<ul>
  <li>item 1</li>
  <li>item 2</li>
  <li>item 3</li>
  <li>item 4</li>
  <li>item 5</li>
  <li class="item-extra">item extra</li>
</ul>

【问题讨论】:

    标签: javascript jquery html css random


    【解决方案1】:

    您可以使用 .insertBefore() 函数来做到这一点。

    例子:

    var ul = document.querySelector('ul');
    var itemExtra = document.querySelector('.item-extra');
    var ulLength = ul.children.length;
    
    ul.insertBefore(itemExtra, ul.children[Math.random() * ulLength | 0]);
    .item-extra {
      color: red;
    }
    <ul>
      <li>item 1</li>
      <li>item 2</li>
      <li>item 3</li>
      <li>item 4</li>
      <li>item 5</li>
      <li class="item-extra">item extra</li>
    </ul>  

    【讨论】:

    • 是一个很好的解决方案,我只有一个问题,你能解释一下下面的代码是什么意思吗?特别是“| 0” [Math.random () * ulLength | 0]
    • @Cristi 这会返回一个介于 0 和您的 ul 拥有的孩子数量之间的随机数。最后的| 0 去掉了小数。
    • 啊,不是 Math.floor()
    猜你喜欢
    • 2019-02-15
    • 2014-05-05
    • 1970-01-01
    • 2017-01-05
    • 1970-01-01
    • 2020-01-24
    • 2020-07-23
    • 1970-01-01
    • 2022-11-26
    相关资源
    最近更新 更多