You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JavaScript打乱div内部内容?现有代码仅能打乱div位置

解决方案:保持div位置不变,打乱内部内容

你当前的代码只是将整个.diffpos容器重新排序,而不是替换容器内的内容。要实现「位置1显示Third、位置2显示First」这类效果,需要提取所有容器内的内容数据,打乱后再重新分配给每个固定位置的div。

修改后的代码

JavaScript 部分

shuffle();
function shuffle() {
    var container = document.getElementById("mainshuffle");
    var elements = Array.prototype.slice.call(container.getElementsByClassName("diffpos"));
    
    // 1. 收集所有div内部的内容数据
    var contentArray = elements.map(element => {
        return {
            text: element.querySelector('p').textContent,
            imgSrc: element.querySelector('img').src
        };
    });
    
    // 2. 打乱内容数组(复用你原来的打乱函数)
    shuffleArray(contentArray);
    
    // 3. 将打乱后的内容重新赋值给每个div
    elements.forEach((element, index) => {
        element.querySelector('p').textContent = contentArray[index].text;
        element.querySelector('img').src = contentArray[index].imgSrc;
    });
}

function shuffleArray(array) {
    for (var i = array.length - 1; i > 0; i--) {
        var j = Math.floor(Math.random() * (i + 1));
        var temp = array[i];
        array[i] = array[j];
        array[j] = temp;
    }
    return array;
}

HTML 部分(保持不变)

<div id="mainshuffle">
    <div class="diffpos">
        <p>Position 1: First</p>
        <img src="position1.jpg">
    </div>
    <div class="diffpos">
        <p>Position 2: Second</p>
        <img src="position2.jpg">
    </div>
    <div class="diffpos">
        <p>Position 3: Third</p>
        <img src="position3.jpg">
    </div>
</div>

代码说明

  • 首先通过map方法把每个.diffpos里的文本和图片地址提取出来,存入数组
  • 用你原有的shuffleArray函数打乱这个内容数组
  • 最后遍历每个固定位置的.diffpos,把打乱后的内容依次填充进去,这样外层div位置不动,内部内容完成了随机分配

内容的提问来源于stack exchange,提问作者Abhishek Chatterjee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 08:25:21