【问题标题】:Display images from array in HTML在 HTML 中显示数组中的图像
【发布时间】:2016-08-12 01:15:27
【问题描述】:

我需要创建一个按需加载的图片库,我从一个 JSON 开始,该 JSON 以如下格式定义库中的所有图片:

var GALLERY_JSON = {
   "size" : "200x200",
   "images": [ 
      {
         "src" : "http://aws.netclime.net/Images/1.png",
         "text" : "This is an image1",
         "link" : "http://cnn.com"
      },
      {
         "src" : "http://aws.netclime.net/Images/2.png",
         "text" : "This is an image2",
         "link" : "http://google.com"            
      },
      …,
      {
         "src" : "http://aws.netclime.net/Images/3.png",
         "text" : "This is an imageN",
         "link" : "http://yahoo.com"            
      }
   ]
};

我试过了:

function getArticleImage() {
    var image = new Image;
    image.className = 'banner-img';
    image.src = 'aws.netclime.net/Images/1.png';
    image.setAttribute("height", "200px");
    image.setAttribute("width", "200px");
    image.onload = function() {
        image.classList.remove();
    };
    return image;
}

我需要一个建议,在 HTML 中显示带有文本和链接的图像的正确方法是什么?

【问题讨论】:

  • 听起来你需要对 HTML 和 JavaScript 做一些基础研究;)
  • 这还不清楚。结果应该如何?所需的 HTML 结构是什么样的? text 是链接的标题、图像描述还是 alt 属性的值?你已经尝试过什么了吗?
  • 结果应该是一个加载了图片的页面。我试试这个:'function getArticleImage() { var image = new Image; image.className = 'banner-img'; image.src = 'aws.netclime.net/Images/1.png'; image.setAttribute("高度", "200px"); image.setAttribute("宽度", "200px"); image.onload = function() { image.classList.remove(); };返回图像; }'

标签: javascript html arrays json


【解决方案1】:

这应该让你开始......

var GALLERY_JSON = {
   "size" : "200x200",
   "images": [ 
      {
         "src" : "http://aws.netclime.net/Images/1.png",
         "text" : "This is an image1",
         "link" : "http://cnn.com"
      },
      {
         "src" : "http://aws.netclime.net/Images/2.png",
         "text" : "This is an image2",
         "link" : "http://google.com"            
      },
      {
         "src" : "http://aws.netclime.net/Images/3.png",
         "text" : "This is an imageN",
         "link" : "http://yahoo.com"            
      }
   ]
};

function getArticleImage(data) {
    var image = new Image;
    image.className = 'banner-img';
    image.src = data.src;
    image.setAttribute("height", data.height);
    image.setAttribute("width", data.width);
    image.onload = function() {
      image.classList.remove();
    };
    return image;
}

GALLERY_JSON.images.forEach(function(data){
  data.width = GALLERY_JSON.size.match(/^[0-9]+/);
  data.height = GALLERY_JSON.size.match(/[0-9]+$/);
  document.body.appendChild( getArticleImage(data) );
})

【讨论】:

    【解决方案2】:

    您应该遍历您的数组,创建一个包含图像的链接元素并将其附加到 DOM。以下是提供文档和示例的两个链接:

    【讨论】:

      【解决方案3】:

      我会推荐模板。

      恕我直言,这是一个更强大的解决方案,您可以轻松更改模板以将您的数据嵌入到您想要的任何第三方画廊/轮播中,并且更清晰。

      示例

      这是一个嵌入在 HTML 中的模板的示例(您可以将它放在那里以便更好地组织)

      它依赖于

      • MustacheJS 用于模板
      • JQuery 仅用于通过 id 获取 div(如果您在其他任何地方都不需要 JQuery,您可以轻松地删除与 DOM 的 JQuery 依赖项)

      hacky .match() 部分是提取宽度和高度,如果您可以在 GALLERY_JSON 中将这两个值作为变量提供,则不需要。

      var GALLERY_JSON = {
         "size" : "200x200",
         "images": [ 
            {
               "src" : "http://aws.netclime.net/Images/1.png",
               "text" : "This is an image1",
               "link" : "http://cnn.com"
            },
            {
               "src" : "http://aws.netclime.net/Images/2.png",
               "text" : "This is an image2",
               "link" : "http://google.com"            
            },
            {
               "src" : "http://aws.netclime.net/Images/3.png",
               "text" : "This is an imageN",
               "link" : "http://yahoo.com"            
            }
         ]
      };
      
      var width = GALLERY_JSON.size.match(/^[0-9]+/);
      var height = GALLERY_JSON.size.match(/[0-9]+$/);
      
      GALLERY_JSON.width = width;
      GALLERY_JSON.height = height;
      
      var template = $('#template').html();
      var gallery = Mustache.render(template, GALLERY_JSON);
      $('#gallery').html(gallery);
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/mustache.js/2.2.1/mustache.min.js"></script>
      
      <div id="gallery"></div>
      
      <script id="template" type="template/mustache">
      <ul>
        {{#images}}
        <li>
          <a href="{{link}}">
            <img src="{{src}}" alt="{{text}}" height="{{height}}" width="{{width}}">
            <p>{{text}}</p>
        </a>
        </li>
        {{/images}}
      </ul>
      </script>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-15
        • 2014-02-09
        • 2016-06-19
        • 2014-05-20
        • 1970-01-01
        • 1970-01-01
        • 2017-12-16
        相关资源
        最近更新 更多