【发布时间】:2018-03-23 17:50:44
【问题描述】:
我对 JavaScript 很陌生,我正在做一个简单的项目。基本上我有一个 HTML 文档,我想在每次从位于“背景”的目录中打开随机图片时更改背景图像。
function main()
{
// Creates a list of filenames from the 'Background/' dir and gets a
// random index in the list
var fs = require('fs');
var fileList = fs.readdirSync('/Background/');
var len = fileList.length;
var index = Math.floor(Math.random() * len);
var filePath = "Background/" + fileList[index];
document.body.style.backgroundImage = "url(filePath)";
document.body.style.backgroundSize = "cover"
}
$(document).ready(main);
无论出于何种原因,它似乎都不起作用。我很难弄清楚 URL 类是如何工作的,因为我认为它与此有关。我没有收到任何错误。执行此操作时,我将背景图像更改为特定图像:
document.body.style.backgroundImage = "url('Background/green.jpg')";
但当我尝试随机检索文件名时不会。 我确定这只是对语言或其他什么的误解,但我似乎无法弄清楚。谢谢。
【问题讨论】:
-
我不确定您希望节点如何在浏览器中运行....
-
@epascarello 的观点——fs(或文件系统)是一个 Node.js(服务器端)特定的工具。您将需要另一种方法来捕获图像的文件名(管理列表、创建服务......)
-
@Doug 哦,有趣。感谢您实际解释错误背后的原因。您有什么具体的工具或方法推荐吗?
-
如果文件名不会经常更改,最简单的方法是创建一个名称数组并使用 Math.random() 从中进行选择。如果您不知道名称的频率或名称(半可靠级别),那么您可以使用 Node.js(或其他服务器端语言)创建一个服务,该服务将向您返回一个随机文件名,基于关于您目录中存在的内容。
标签: javascript html css file background