本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

将图像文件添加到 JSON 对象并在 HTML 中显示它?

发布于2024-12-12 18:13     阅读(811)     评论(0)     点赞(29)     收藏(2)


我是编码方面的新手,我注册这里就是为了问这个问题。我想知道你们中是否有人可以给我指明正确的方向或帮助我解决这个代码问题。首先,我的目标是创建一个艺术作品集,以 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>块,因为它们除了在页面顶部写“抱歉,出了点问题”之外什么也不会做。

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

为了解决这个问题,您可以更改希望图像放置到的元素id的值,使其与 JSON 数据的 id 属性完全匹配,然后将您的 更改<div>document.getElementById("images")document.getElementById(obj.id)

请注意,这不是一个很好的解决方案,因为它要求数据文件准确知道页面上的值是什么,从而将您的数据与网页布局绑定在一起id。我建议您查找并学习如何使用document.getElementsByName()document.getElementsByClassName()




所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.qianduanheidong.com/blog/article/538570/12502967fef9036ecc89/

来源:前端黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

29 0
收藏该文
已收藏

评论内容:(最多支持255个字符)