javascript - 如何从文件夹动态加载图像,而不是在数组中输入每个图像名称?
问题描述
我将文件夹中的每个图像手动放入数组中。有没有办法动态地做到这一点,但只使用 for 循环遍历文件夹中的图像?
索引.html
<div class = "TestRotator">
<img src = "/Users/loh/Documents/ElectronJS/newapp1/newapp1/pages/images/Fib.png", height="300" id="rotator">
</div>
JS
<script type="text/javascript">
(function () {
var rotator = document.getElementById('rotator'); // change to match image ID
var imageDir = '/Users/loh/Documents/ElectronJS/newapp1/newapp1/pages/images/';
var delayInSeconds = 5;
// set number of seconds delay
// list image names
var images = ['Camel.png', 'Noose.png', 'Sphinx.png'];
var num = 0;
var changeImage = function () {
var len = images.length;
rotator.src = imageDir + images[num++];
if (num == len) {
num = 0;
}
};
setInterval(changeImage, delayInSeconds * 1000);
})();
</script>
解决方案
一种选择是重命名图像,例如 fromCamel.png
和Noose.png
to0.png
和1.png
。然后你可以这样做:
let currentIndex = 0;
const totalImages = 3;
const changeImage = function () {
num = (num + 1) % totalImages;
rotator.src = imageDir + num + '.png';
};
另一种选择,如果您可以将图像托管在服务器上(在本地主机上或在某处的互联网上),您可以在服务器上添加一个路由,允许客户端 JS 直接请求图像中所有文件的列表,然后遍历它。可以让您执行以下操作的东西:
fetch('get-image-file-names')
.then(res => res.json())
.then((images) => {
const rotator = document.getElementById('rotator');
// etc; now use the `images` variable, which is an array of image names
// sent to the client by the server
});
推荐阅读
- elasticsearch - 在 Confluent.Cloud(Kafka) 到 Elastic Cloud 之间创建 Elastic Sink 连接器
- excel - 使用公式在单元格之间复制 Excel 格式
- python - 在 seaborn 中绘制不同组时如何将数据作为一组包含在内
- qt - 如何从 Qml Checkbox 获取初始值到 c++?
- mysql - 如何使 MySQL 8 与包含多个 FROM 表的语句兼容
- gnuplot - 如何通过gnuplot绘制网络
- powershell - 将来自两个 Powershell 命令的输出组合到 CSV
- python - 在 python 中使用一个 tkinter 按钮创建多个窗口
- r - 如何列出已安装的 R 版本?
- python - 如何为一个数据类提供另一个数据类?