2017-07-26 145 views
-2

我試圖在有人訪問/刷新頁面時得到一個隨機背景圖像。Math.floor(Math.random()* val.length)返回一個字母而不是數字

寫出數組,如下所示,產生所需的結果,但我想從文件夾中拉出。

$(document).ready(function() { 

    var randomNumber = Math.floor(Math.random() * images.length); 
    var images=[ 
     './images/01.jpg', 
     './images/02.jpg', 
     './images/03.jpg', 
    ]; 

    $('#backgroundImage').attr('src',images[randomNumber]); // Random image 

}); 

使用Ajax請求,如下,幾乎作品除了Math.floor()返回一個字母或特殊字符像

img alt="" id="backgroundImage" src="g" 

,而不是

img alt="" id="backgroundImage" src="./images/02.jpg" 

代碼:

var images = "images/"; 

$.ajax({ 
    url : images, 
    success: function (data) { 
     $(data).find("a").attr("href", function (i, val) { 
      if(val.match(/\.(jpe?g|png|gif)$/)) { 
       $("body").append("<img src='" + images + val[Math.floor(Math.random() * val.length)] +"'>"); 
      } 
     }); 
    } 
}); 

方向將不勝感激。

+2

沒有,它不返回任何東西,但一些獲得一個隨機一個。 –

+1

當數據從ajax請求返回時,它的外觀如何? –

+1

而不是在SO上發佈問題*到目前爲止*快速解決此問題的最佳方法是使用內置於瀏覽器中的強大調試器在ajax完成回調上設置斷點並逐句通過代碼語句,查找在你的變量和你如何去。 –

回答

1

你現在正在做什麼val[Math.floor(Math.random() * val.length)]正在從字符串vala元素屬性值)中挑選一個隨機字符。

你可能想使所有的圖像陣列從<a>然後使用原來的代碼,以從陣列

var imgArray = $(data).find("a").filter(function(){ 
    return this.href.match(/\.(jpe?g|png|gif)$/) 
}).map(function(){ 
    return images + this.href 
}).get(); 

var randomNumber = Math.floor(Math.random() * imgArray.length);   
$('#backgroundImage').attr('src',imgArray[randomNumber]); 
+0

從我的(現在刪除的)答案到上面的開頭,增加了他/她目前正在做什麼的解釋的自由。 –

+0

非常感謝@charlietfl。 – bardic

+0

一旦我刪除.map(function(){ return images + this.href }) – bardic

相關問題