Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我对洗牌数组函数的设置和调用哪里出错了?_Javascript_Image_Function_Shuffle_Method Call - Fatal编程技术网

Javascript 我对洗牌数组函数的设置和调用哪里出错了?

Javascript 我对洗牌数组函数的设置和调用哪里出错了?,javascript,image,function,shuffle,method-call,Javascript,Image,Function,Shuffle,Method Call,我能循环一个函数。现在我想使用相同的5个图像并将它们洗牌,每个图像只显示一次(给出5!=120个排列) 我已经找到了很多关于如何洗牌和显示随机数(不是图像)的技巧,但我认为我的问题是设置然后调用函数。我该怎么做 假设: 在我的标记之间,我需要定义我的洗牌功能 我的图像数组可以保持原样(因为它是相同的,显然要确保从新URL更新任何更改的引用) 在我的页面主体中调用shuffle函数(我不确定这一点) 用简单的英语,我试图实现: “将收藏中的五幅图像按任意顺序排列一次。” 发生了什么: 出现五个图像

我能循环一个函数。现在我想使用相同的5个图像并将它们洗牌,每个图像只显示一次(给出5!=120个排列)

我已经找到了很多关于如何洗牌和显示随机数(不是图像)的技巧,但我认为我的问题是设置然后调用函数。我该怎么做

假设:

  • 在我的
    标记之间,我需要定义我的洗牌功能
  • 我的图像数组可以保持原样(因为它是相同的,显然要确保从新URL更新任何更改的引用)
  • 在我的页面主体中调用shuffle函数(我不确定这一点)
  • 用简单的英语,我试图实现:

    “将收藏中的五幅图像按任意顺序排列一次。”

    发生了什么:

    出现五个图像,通常图像重复

    成功的网页包含以下内容:

        </style>
    <script type="text/javascript">
    // place your images in this array
    var random_images_array = ['Weare.jpg', 'Always.jpg', 'There.jpg', 'For.jpg', 'You.jpg'];
    
    function getRandomImage(imgAr, path) {
        path = path || '../Public/images/'; // default path here
        var num = Math.floor( Math.random() * imgAr.length );
        var img = imgAr[ num ];
        var imgStr = '<img src="' + path + img + '" alt = "">';
        document.write(imgStr); document.close();
    }
    
    </script>
    </head>
    <body>
    
    
    //将图像放置在此阵列中
    var random_images_array=['Weare.jpg','Always.jpg','There.jpg','For.jpg','You.jpg'];
    函数getRandomImage(imgAr,路径){
    path=path | |'../Public/images//'//此处的默认路径
    var num=Math.floor(Math.random()*imgAr.length);
    var img=imgAr[num];
    var imgStr='';
    document.write(imgStr);document.close();
    }
    
    然后这个(也就是说,我假设调用函数)

    
    对于(i=0;i<5;i++)getRandomImage(随机图像数组,'images/)
    

    如何修复此问题?

    下面将洗牌一组图像URL,然后将这些URL作为图像逐个添加到DOM中

    const$=document.querySelector.bind(文档)
    函数洗牌(arr){
    for(让curr=arr.length-1;curr>=0;--curr){
    const random=~~(Math.random()*curr)
    [arr[random],arr[curr]]=[arr[curr],arr[random]]
    }
    返回arr
    }
    函数渲染(arr){
    设html=“”;
    对于(让el代表arr){
    html+=img`${el}`
    }
    $(“#图像”).innerHTML=html
    }
    函数img(389;,url){
    返回``
    }
    常数arr=[
    “数据:图像/png;base64,IVBorW0KggoaaaAnsuhueugaaaaaaaaaaaaaaaqmaaal21Bkaaaa1bkaaa1bVex//WCKxVRFaaaAckleQvr4ngniaaabgadNjD8QaaaBjru5erkjggg=”,
    “数据:图像/png;base64,IVBorW0KggoaaaAnsuhueugaaaaaaaaaaaaaaqmaaal21Bkaaaa1bKaaa1bVeua/WA0xSCOAaaaAckleqvr4ngniaaabgadnjd8qaaaBjru5erkjggg=”,
    “数据:图像/png;base64,IVBorW0KggoaaaAnsuhueugaaaaaaaaaaaaaaqmaaal21Bkaaaa1bkaaaa1bVex/AAAZ4GK3aaaaaAckleqvr4ngniaaabgadnjd8qaaaBjru5erkjgg=”,
    “数据:image/png;base64,ivborw0Kggoaaaansuhueugaaaaaaaaaaaaaqmaaal21bkaaaa1bmveuap+kenjxaaaackleqvr4ngniaaabgadnjd8qaabjru5erkjgg=”
    ]
    $(“按钮”).addEventListener(“单击”,()=>渲染(随机播放(arr)))
    渲染(随机播放(arr))
    正文{
    字体系列:无衬线;
    字号:0;
    }
    img{
    显示:内联块;
    宽度:170px;
    高度:60px;
    盒影:0 2px白色插页;
    填充:0;
    保证金:0;
    }
    按钮:焦点{大纲:无}
    钮扣{
    字号:1rem;
    边界:无;
    背景:rgb(0200200);
    边界半径:5px;
    光标:指针;
    线高:40px;
    高度:40px;
    宽度:340px;
    填充:0;
    保证金:0;
    颜色:白色;
    -webkit用户选择:无;
    -webkit点击高亮颜色:rgba(0,0,0,0);
    盒影:0 2px白色插页;
    }
    #图像{
    盒影:0.2px银镶嵌;
    宽度:340px;
    高度:120px;
    }
    洗牌!
    
    一位删除了答案的好心评论员告诉我:

        var random_images_array = ['Weare.jpg', 'Always.jpg', 'There.jpg', 'For.jpg', 'You.jpg'];
    
    function shuffleArray(arr) {
       for (var i = arr.length - 1; i > 0; i--) {
          var j = Math.floor(Math.random() * (i + 1));
          var temp = arr[i];
          arr[i] = arr[j];
          arr[j] = temp;
       }
    }
    
    // Shuffle images here
    shuffleArray(random_images_array);
    
    function getRandomImage(imgAr, path) {
       path = path || '../Public/images/'; // default path here
       for (var i = 0; i < imgAr.length; i++) {
          var img = imgAr[i];
          var imgStr = '<img src="' + path + img + '" alt = "">';
          document.write(imgStr);
          document.close();
       }
    }
    
    getRandomImage(random_images_array, 'images/')
    
    var random_images_array=['Weare.jpg','Always.jpg','There.jpg','For.jpg','You.jpg'];
    功能随机播放(arr){
    对于(变量i=arr.length-1;i>0;i--){
    var j=Math.floor(Math.random()*(i+1));
    var-temp=arr[i];
    arr[i]=arr[j];
    arr[j]=温度;
    }
    }
    //在这里洗牌图像
    随机图像数组;
    函数getRandomImage(imgAr,路径){
    path=path | |'../Public/images//'//此处的默认路径
    对于(变量i=0;i
    成功了!谢谢你,神秘助手

        var random_images_array = ['Weare.jpg', 'Always.jpg', 'There.jpg', 'For.jpg', 'You.jpg'];
    
    function shuffleArray(arr) {
       for (var i = arr.length - 1; i > 0; i--) {
          var j = Math.floor(Math.random() * (i + 1));
          var temp = arr[i];
          arr[i] = arr[j];
          arr[j] = temp;
       }
    }
    
    // Shuffle images here
    shuffleArray(random_images_array);
    
    function getRandomImage(imgAr, path) {
       path = path || '../Public/images/'; // default path here
       for (var i = 0; i < imgAr.length; i++) {
          var img = imgAr[i];
          var imgStr = '<img src="' + path + img + '" alt = "">';
          document.write(imgStr);
          document.close();
       }
    }
    
    getRandomImage(random_images_array, 'images/')