Javascript 我对洗牌数组函数的设置和调用哪里出错了?
我能循环一个函数。现在我想使用相同的5个图像并将它们洗牌,每个图像只显示一次(给出5!=120个排列) 我已经找到了很多关于如何洗牌和显示随机数(不是图像)的技巧,但我认为我的问题是设置然后调用函数。我该怎么做 假设:Javascript 我对洗牌数组函数的设置和调用哪里出错了?,javascript,image,function,shuffle,method-call,Javascript,Image,Function,Shuffle,Method Call,我能循环一个函数。现在我想使用相同的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/')