javascript - 随机化 div 标签,没有任何空格

标签 javascript html

我想洗牌我的 div s 没有任何空格。我使用 JavaScript 代码进行随机播放,但它无法正常工作,并且有时在重新加载页面后会显示空白。

这是我的 JavaScript 代码:

var cards = $(".random");
for(var i = 0; i < cards.length; i++){
    var target = Math.floor(Math.random() * cards.length -1) + 1;
    var target2 = Math.floor(Math.random() * cards.length -1) + 1;
    cards.eq(target).before(cards.eq(target2));
}

这是我的示例 div 标签:

<div class="col-sm-4 random" align="center" id="random">
    <div class="thumbnail" id="border">
        <a href="#modal-2" onclick="lockScroll()"><img src="img/findmyfare.jpg" style="width:100%" class="d-block w-100" class="img-fluid"></a>
        <div class="caption offers">
            <a href="#modal-2" onclick="lockScroll()">
                <div class="offer-wrap">
                    <div class="img-wrap" data-backimg="offers-shopping">
                    </div>
                    <div class="title2">
                        <h5 style="text-align:left;padding-left:10px;color:white;">Up to 25% off on flight<br>
                            bookings
                        </h5>
                    </div>
            </a>
        </div>
        <h4 style="padding-top:10px; color:#262362;text-align:left;font-size: 125% !important; cursor: pointer;" href="#modal-2" onclick="lockScroll()">findmyfare</h4>
           <p style="text-align:left; cursor: pointer;" class="text2" href="#modal-2">Offer valid from 20 June - 20 July 2017</p><br>
       </div>
    </div>

最佳答案

您并不是真正洗牌,而是将牌从原来的位置移动到新位置。结果是原始位置变空 - 并且它将保持为空,除非 random() 稍后碰巧选择该空位置作为目标。

这个隐藏的代码片段将可视化(运行它,然后按随机播放按钮):

function shuffle() {
  var cards = $(".random");
  for (var i = 0; i < cards.length; i++) {
    var target = Math.floor(Math.random() * cards.length - 1) + 1;
    var target2 = Math.floor(Math.random() * cards.length - 1) + 1;
    cards.eq(target).before(cards.eq(target2));
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
[<span class="random">A</span>]
[<span class="random">B</span>]
[<span class="random">C</span>]
[<span class="random">D</span>]
[<span class="random">E</span>]
[<span class="random">F</span>]
[<span class="random">G</span>]
[<span class="random">H</span>]
<br/>
<button onclick="shuffle()">shuffle</button>

您可以通过区分位置卡片本身来改进这一点,然后通过进行实际的卡片交换,这样位置将始终包含正好一张卡。

使用新方法时,索引计算需要有所不同,因此我也进行了更改。

改进的代码片段:

function shuffle() {
  var cards = $(".random");
  for (var i = 0; i < cards.length; i++) {
    var index1 = Math.floor(Math.random() * cards.length);
    var index2 = Math.floor(Math.random() * cards.length);
    var card1 = cards.eq(index1);
    var card2 = cards.eq(index2);
    var location1 = card1.closest(".location");
    var location2 = card2.closest(".location");
    location1.append(card2);
    location2.append(card1);
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
[<span class="location"><span class="random">A</span></span>]
[<span class="location"><span class="random">B</span></span>]
[<span class="location"><span class="random">C</span></span>]
[<span class="location"><span class="random">D</span></span>]
[<span class="location"><span class="random">E</span></span>]
[<span class="location"><span class="random">F</span></span>]
[<span class="location"><span class="random">G</span></span>]
[<span class="location"><span class="random">H</span></span>]
<br/>
<button onclick="shuffle()">shuffle</button>

关于javascript - 随机化 div 标签,没有任何空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50481223/

相关文章:

javascript - 有人可以解释我的函数 deleteButton(this) 吗?

html - 使用这样的 CSS 使网站居中对齐是个好主意吗?

java - HTML 搜索验证 android

jquery - 即使我滚动,中间的 CSS 图像

Javascript 字符串替换 '&' 不起作用

javascript - 传单 JS : do event objects need to be instantiated before defining event handler

javascript - 未自动检测到细胞变化

javascript - 服务器时区发送数据问题

html - 图标不起作用

javascript - 如何获取和设置谷歌地图的地理位置?