HTML 页面可以从文件夹访问 SVG,但无法加载它们

问题描述 投票:0回答:1

我目前正在使用 HTML 制作游戏,我设置了一个临时页面来测试某些功能是否有效。我试图通过输入 JavaScript 将文件夹中的一些 SVG 文件放在我的 HTML 网站上:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>SVG Gallery</title>
</head>
<body>
    <h1>SVG Gallery</h1>
    <div id="svg-container"></div>

    <script>
        async function fetchSVGs() {
            try {
                const response = await fetch('/assets/svg/props/items');
                const text = await response.text();
                
                // This will parse the directory listing to extract SVG file names.
                const parser = new DOMParser();
                const doc = parser.parseFromString(text, 'text/html');
                const links = Array.from(doc.querySelectorAll('a'))
                    .filter(link => link.href.endsWith('.svg'));

                // Load each SVG file dynamically
                const container = document.getElementById('svg-container');
                links.forEach(link => {
                    const svgPath = link.getAttribute('href');
                    const img = document.createElement('img');
                    img.src = svgPath;
                    container.appendChild(img);
                });
            } catch (error) {
                console.error('Error loading SVGs:', error);
            }
        }

        fetchSVGs();
    </script>
</body>
</html>

如您所见,我想将它们全部列出在页面上。它确实设法进入项目文件夹并查看其中的所有项目,但无法加载它们。上面说

Failed to load resource: the server responded with a status of 404

以下是我的文件夹中的项目以及访问它们但未加载图像的系统:

在此输入图片描述

在此输入图片描述

javascript html svg
1个回答
0
投票

404错误通常发生在文件路径错误时。请检查您的文件是否正确。如果您的 HTML 文件位于根目录中,请确保

assets/svg/props/items
文件夹结构与此匹配。

如果您有已知的 SVG 文件名列表,则可以使用 JavaScript 为每个文件动态添加元素。

<script>
        // List of SVG filenames
        const svgFiles = ['image1.svg', 'image2.svg', 'image3.svg'];
        const folderPath = '/assets/svg/props/items/';

        const container = document.getElementById('svg-container');
        svgFiles.forEach(file => {
            const img = document.createElement('img');
            img.src = folderPath + file;
            img.alt = file;  // Optional alt attribute for accessibility
            container.appendChild(img);
        });
  
</script>

© www.soinside.com 2019 - 2024. All rights reserved.