2017-07-26 146 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

相关问题