javascript - 将图像文件添加到 JSON 对象并以 HTML 显示?

标签 javascript html css json

我是编码方面的初学者,我在这里注册就是为了问这个问题。我想知道你们中的任何人是否可以指出正确的方向或帮助我解决此代码问题。首先,我的目标是创建一个艺术作品集,以 3x3 格式展示我的艺术作品,基本上与 Instagram 的格式相同。

所以在过去的几周里,我和一位导师一起做了很多修补工作,起初,他告诉我只使用 JavaScript 以 3x3 格式显示我的图像。这样做之后,我被告知要学习更多关于 JSON 的知识,以及如何将图像存储在 JSON 对象中,并像以前一样在 3x3 对象中显示它。起初,使用 JavaScript 效果很好,但在他告诉我使用 JSON 进行更改后,我的图像不再显示相同。现在它们垂直堆叠在一起,不再是 3x3。我一直在将代码与我的旧文件进行比较,最新的文件仍然垂直堆叠......

我当前的JS代码:

var data = {
"images": [{
        "img": "img/balloon.jpg",
        "id": "balloon"
    },
    {
        "img": "img/cate.jpg",
        "id": "cate"

    },
    {
        "img": "img/dragon.jpg",
        "id": "dragon"
    },
    {
        "img": "img/Groot.jpg",
        "id": "groot"
    },
    {
        "img": "img/flareon.jpg",
        "id": "flareon"
    },
    {
        "img": "img/forest.jpg",
        "id": "forest"
    },
    {
        "img": "img/fox.jpg",
        "id": "fox"
    },
    {
        "img": "img/glaceon.jpg",
        "id": "glaceon"
    },
    {
        "img": "img/majora.jpg",
        "id": "majora"
    }, 
] };

<!DOCTYPE html>
<html>

<head>
    <title> Art Gallery</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" integrity="sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB" crossorigin="anonymous">
    <link rel="stylesheet" type="text/css" href="main.css">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">





</head>

<header>
    <center>
        <div class="banner">
            <div class="centered-text"> My Art Gallery</div>
        </div>
    </center>
</header>




<body>

    <script>
        var fs = require('./img');
        var files = fs.readdirSync('./img');
        function myMessage() {
            if (files == null) {
                return " sorry something went wrong ";
            } else {
                // print files
            }
        }
    </script>

    <script>
        document.write(myMessage());
    </script>



    <p>
        <div class="tn-container tn left">
            <div id="profile-picture">
                <script>
                    var myProfile = document.createElement("img");
                    myProfile.setAttribute("src", "img/Me1.jpg");
                    document.getElementById("profile-picture").prepend(myProfile);
                </script>

            </div>

            <p>
                <div class="block_1 hline-bottom "></div>
            </p>
        </div>
    </p>

    <div class="container">
        <div class="row">
            <div class="col-md-4 col-sm-6 col-xs-12">
                <div class="art" id="images"></div>
            </div>



            <div class=" col-md-4 col-sm-6 col-xs-12">
                <div class="art" id="images"></div>
            </div>

            <div class=" col-md-4 col-sm-6 col-xs-12">
                <div class="art" id="images"></div>
            </div>


            <div class="col-md-4 col-sm-6 col-xs-12">
                <div class="art" id="images"></div>
            </div>


            <div class="col-md-4 col-sm-6 col-xs-12">
                <div class="art" id="images"></div>
            </div>

            <div class="col-md-4 col-sm-6 col-xs-12">
                <div class="art" id="images"></div>
            </div>


            <div class="col-md-4 col-sm-6 col-xs-12">
                <div class="art" id="images"></div>
            </div>


            <div class="col-md-4 col-sm-6 col-xs-12">
                <div class="art" id="images"></div>
            </div>

            <div class="col-md-4 col-sm-6 col-xs-12">
                <div class="art" id="images"></div>
            </div>
        </div>
    </div>


</html>

<script type="text/javascript " src="script.js "></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>

</body>

data.images.forEach(function(obj) {
var img = new Image();
img.src = obj.img;
img.setAttribute("class", "art");
document.getElementById("images").appendChild(img);

如您所见,我一直在使用容器和行来制作我的 3x3 格式。在我开始将图像插入 JSON 对象之前一切都很好。图像显示哪个很棒,但现在它们是垂直堆叠的。我只想像以前一样 3x3 :/

这是我第一次在 Stack Overflow 上发帖,所以如果我的问题不清楚或者我没有正确显示我的代码,我提前道歉。我也可以张贴我的旧文件进行比较

最佳答案

首先,fsrequireNode.js模块,这意味着它们存在于服务器上,而不是在客户端(即 HTML 网页)上定义。试图将该代码包含在 HTML 中 <script>标签将不起作用。对于您的情况,我建议删除前两个 <script> block ,因为它们只会在页面顶部写上“抱歉,出了点问题”。

至于图像“堆叠在一起”的问题,那是因为您试图用相同的 id 写入多个 HTML 元素。值(value)。 id页面上的每个元素都必须是唯一的。如果您尝试分配多个相同的东西 id , 那么通常只有具有该 id 的第一个元素有效,因为 document.getElementById将在第一场比赛后停止搜索。即使是这种行为也不一定得到保证。永远不要给多个元素相同的 id .

要解决这个问题,您可以更改id <div> 的值(value)您希望图像转到的元素与您的 JSON 数据的 id 属性完全匹配,并更改您的 document.getElementById("images")document.getElementById(obj.id) .

请注意,这不是一个很好的解决方案,因为它通过要求数据文件确切知道 id 的内容,将您的数据与网页布局联系起来。您页面上的值是。我建议您查找并学习如何使用document.getElementsByName()document.getElementsByClassName() .

关于javascript - 将图像文件添加到 JSON 对象并以 HTML 显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51738504/

相关文章:

javascript - Node js与express不加载mongodb数据库内容

javascript - 可见窗口高度而不是 $(window).height();

python - 从站点获取数据,而这些数据在 Python 的主 HTML 文件中找不到

html - 动态对齐 :after according to parent length

html - 如何根据另一个 div 的边距定位一个 div?

javascript - 如何将 javascript 测验结果更改为基于权重的评分?

javascript - 如何忽略 ExtJS 数据模型中的空字段?

html - CSS 响应式边距顶部

jquery - 为什么我的easypie号码没有显示在里面?

html - CSS/HTML - div 内的 div 放置不正确