Javascript 基于随机数生成随机背景图像

Javascript 基于随机数生成随机背景图像,javascript,css,random,document.write,Javascript,Css,Random,Document.write,我以为这会管用,但我看不出哪里出了问题。只是不输出生成的数字,而是默认为0。变量未更新 想要有一个随机图像显示作为背景,所以我创建了5个名为bg-x.jpg的图像 然后生成一个1到5之间的随机数,存储在var imgNumber 然后使用document.write在页面上打印一个样式,用该imgNumber代替文件URL <script type="text/javascript"> var imgNumber = 0; function randomImage(imgNumber

我以为这会管用,但我看不出哪里出了问题。只是不输出生成的数字,而是默认为0。变量未更新

想要有一个随机图像显示作为背景,所以我创建了5个名为bg-x.jpg的图像

然后生成一个1到5之间的随机数,存储在
var imgNumber

然后使用
document.write
在页面上打印一个样式,用该
imgNumber
代替文件URL

<script type="text/javascript">
var imgNumber = 0;
function randomImage(imgNumber){
    var imgNumber = 1 + Math.floor(Math.random() * 5);
    console.log('Random number is ' + imgNumber);
}
window.onload = randomImage;
document.write('<style type="text/css"> body{background-image:url("images/bg/bg-' + imgNumber +'.jpg");}</style>');
</script>

var imgNumber=0;
函数随机图像(imgNumber){
var imgNumber=1+Math.floor(Math.random()*5);
console.log('随机数为'+imgNumber);
}
window.onload=随机图像;
编写('body{background image:url(“images/bg/bg-'+imgNumber+'.jpg”);});
控制台工作正常,并显示一个随机数,所以我只能假设我在这里出错了

document.write('<style type="text/css"> body{background-image:url("images/bg/bg-' + imgNumber +'.jpg");}</style>');
document.write('body{background image:url(“images/bg/bg-'+imgNumber+'.jpg”);});

我认为您需要做的就是更换:

var imgNumber = 1 + Math.floor(Math.random() * 5);

在函数内部,创建并分配了一个名为imgNumber的新变量,而外部变量则完全没有更改

编辑:尝试以下操作:

<script type="text/javascript">
function randomImage(){
    return 1 + Math.floor(Math.random() * 5);
}
document.write('<style type="text/css"> body{background-image:url("images/bg/bg-' + randomImage() + '.jpg");}</style>');
</script>

函数randomImage(){
返回1+Math.floor(Math.random()*5);
}
write('body{background image:url(“images/bg/bg-'+randomImage()+'.jpg”);});
您甚至不需要函数,以下功能也可以:

<script type="text/javascript">
    document.write('<style type="text/css"> body{background-image:url("images/bg/bg-' + (1 + Math.floor(Math.random() * 5)) + '.jpg");}</style>');
</script>

编写('body{background image:url(“images/bg/bg-'+(1+Math.floor(Math.random()*5))+'.jpg”);});

我认为您需要做的就是更换:

var imgNumber = 1 + Math.floor(Math.random() * 5);

在函数内部,创建并分配了一个名为imgNumber的新变量,而外部变量则完全没有更改

编辑:尝试以下操作:

<script type="text/javascript">
function randomImage(){
    return 1 + Math.floor(Math.random() * 5);
}
document.write('<style type="text/css"> body{background-image:url("images/bg/bg-' + randomImage() + '.jpg");}</style>');
</script>

函数randomImage(){
返回1+Math.floor(Math.random()*5);
}
write('body{background image:url(“images/bg/bg-'+randomImage()+'.jpg”);});
您甚至不需要函数,以下功能也可以:

<script type="text/javascript">
    document.write('<style type="text/css"> body{background-image:url("images/bg/bg-' + (1 + Math.floor(Math.random() * 5)) + '.jpg");}</style>');
</script>

编写('body{background image:url(“images/bg/bg-'+(1+Math.floor(Math.random()*5))+'.jpg”);});

您在函数中使用了局部变量imgNumber,因此请删除函数中imgNumber的变量。这是函数作用域的问题。您在函数中使用了局部变量imgNumber,所以请删除函数中imgNumber的var。这是函数范围的问题。我试过了,但我认为这一定是全局/局部变量的问题?初始化变量为0。我只得到了0,所以var没有被更新。尝试过,但我认为这一定是全局/局部变量的问题?初始化变量为0。我只得到0,所以var没有被更新。