2014-09-27 77 views
0

我已經創建了一個腳本來用0-118之間的數字填充數組,並使用函數來對其進行混洗。從填充數組中更改img src

例如爲:

var Arr = new Array(); 

for (var i = 0; i < 119; i++) { 
    Arr[i] = i; 
} 

function shuffle(o){ 
    for(var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x); 
    return o; 
}; 

newArray = shuffle(Arr); 

我有24個大拇指被命名0.jpg,1.JPG等118.jpg畫廊。我需要從數組中調用每個拇指的數字。

等效在PHP是:

<?php $arr = array_rand(range(1, 117), 24);?> 
<img src="images/<?php echo $arr[0].'.jpg'; ?>" /> 

可以這樣用JavaScript做什麼?我應該如何處理它?用拇指的名字創建一個數組是不現實的。

+0

【如何隨機化(隨機播放)JavaScript數組?](http://stackoverflow.com/questions/2450954/how-to-randomize-shuffle-a-javascript-array) – mplungjan 2014-09-27 19:00:55

+2

@mplungjan OP已經有一個shuffle方法,這不是他們要求 – Ian 2014-09-27 19:03:11

+0

但添加.jpg到每個不能很難的每個或地圖或減少 – mplungjan 2014-09-27 19:04:41

回答

0

我設法做這樣的(幫助從同事):

var array   = []; // create array for the images 

for (var i = 0; i < 90; i++) { 
    array[i] = i; 
} 

var new_array  = shuffle(array); // shuffled array 

for (var i = 1; i <= 24 ; i++) { 
    $('#' + i).attr('src', 'images/banner/' + new_array[i-1] + '.jpg'); 
} 

window.setInterval(function(){ 
    var random_position = Math.floor(Math.random() * 24) + 1; // grab a random position from the grid 
    var random_image = Math.floor(Math.random() * array.length) + 0; // grab a random image 

    while ($.inArray(random_image, new_array.slice(0, 24)) > -1) { // condition to avoid duplicate images 
     random_image = Math.floor(Math.random() * array.length) + 0; 
    } 

    $('#' + random_position).fadeOut(300, function() { // change image 
     $('#' + random_position).attr('src', 'images/banner/' + random_image + '.jpg'); 
     $('#' + random_position).fadeIn(300); 
    }); 

    new_array[random_position - 1] = random_image; // register the change 

    return false; 

}, 5000); 

function shuffle(o){ // shuffle function 
for (var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x); 
return o;}; 
0

你可以給圖像類,做

$(".imageClass").each(function(i) { 
this.src="/images/"+newArray[i]+".jpg"; 
}); 
+0

會thi在將attr添加到類之前,s腳本是否會對數組進行洗牌?這樣做可能是重複的嗎? – Cosmin 2014-09-28 20:07:31

+0

我不太贊同你的意見。另外我沒有看到洗牌。這是一個替代方法:http://stackoverflow.com/questions/2450954/how-to-randomize-shuffle-a-javascript-array – mplungjan 2014-09-29 04:09:29