javascript - 在 JavaScript 中向下钻取一个 obj 以获取数据

标签 javascript dom

基本上,我很难将数据从数据类型获取到 DOM 中。我想要的是来自数组的 src 值来填充 DOM 中的 img 标签

HTML:

<div id="container-fluid--secondary" class="container-fluid container-fluid--secondary">
   <section class="a">
      <div class="video-container">
         <img class="video-container__thumbnail" src="https://via.placeholder.com/250x141.png?text=Video Thumbnail 250px x 141px" alt="Video thumbnail">
         <img class="video-container__thumbnail" src="https://via.placeholder.com/250x141.png?text=Video Thumbnail 250px x 141px"
            alt="Video thumbnail">
         <img class="video-container__thumbnail" src="https://via.placeholder.com/250x141.png?text=Video Thumbnail 250px x 141px"
            alt="Video thumbnail">
      </div>
   </section>
   <section class="b">
      <div class="video-container">
         <img class="video-container__thumbnail" src="https://via.placeholder.com/250x141.png?text=Video Thumbnail 250px x 141px"
            alt="Video thumbnail">
         <img class="video-container__thumbnail" src="https://via.placeholder.com/250x141.png?text=Video Thumbnail 250px x 141px"
            alt="Video thumbnail">
         <img class="video-container__thumbnail" src="https://via.placeholder.com/250x141.png?text=Video Thumbnail 250px x 141px"
            alt="Video thumbnail">
      </div>
   </section>
</div>

JS:

var videos = {
    'a': [
        {
            'name': 'a',
            'src': 'https://foo/video/'
        },
        {
            'name': 'b',
            'src': 'https://bar/video/'
        },
        {
            'name': 'c',
            'src': 'https://baz/video/'
        }
    ],
    'b': [
        {
            'name': 'a',
            'src': 'https://fizz/video/'
        },
        {
            'name': 'b',
            'src': 'https://buzz/video/'
        },
        {
            'name': 'c',
            'src': 'https://blargh/video/'
        }
    ]
},

 containerFluidSecondary = document.getElementById('container-fluid--secondary'),
   videoNames = Object.keys(videos);     

        containerFluidSecondary.querySelectorAll('section')
        .forEach(function(section, i){
         if (section.className == videoNames[i]) {
            var videoContainer = Array.prototype.slice.call(section.getElementsByClassName('video-container')[0].children);

            videoContainer.forEach(function(img, i){
              for (var videoCategory in videos){
                console.log('videoCategory', videoCategory[i][i])
              }
            })
         }})

最佳答案

videoCategory 的值为 "a""b"。因此,videoCategory[i][i] 没有意义。

看起来像你想要的:

containerFluidSecondary.querySelectorAll('section').forEach(function(section){
  section.querySelectorAll('img').forEach(function(img, i) {
    img.src = videos[section.className][i].src;
  });
});

var videos = {
    'a': [
        {
            'name': 'a',
            'src': 'https://foo/video/'
        },
        {
            'name': 'b',
            'src': 'https://bar/video/'
        },
        {
            'name': 'c',
            'src': 'https://baz/video/'
        }
    ],
    'b': [
        {
            'name': 'a',
            'src': 'https://fizz/video/'
        },
        {
            'name': 'b',
            'src': 'https://buzz/video/'
        },
        {
            'name': 'c',
            'src': 'https://blargh/video/'
        }
    ]
};

document.querySelectorAll('section').forEach(function(section){
  section.querySelectorAll('img').forEach(function(img, i) {
    img.src = videos[section.className][i].src;
  });
});

document.querySelectorAll('section').forEach(function(section){
  section.querySelectorAll('img').forEach(function(img, i) {
    img.src = videos[section.className][i].src;
  });
});
<div id="container-fluid--secondary" class="container-fluid container-fluid--secondary">
   <section class="a">
      <div class="video-container">
         <img class="video-container__thumbnail" src="https://via.placeholder.com/250x141.png?text=Video Thumbnail 250px x 141px" alt="Video thumbnail">
         <img class="video-container__thumbnail" src="https://via.placeholder.com/250x141.png?text=Video Thumbnail 250px x 141px"
            alt="Video thumbnail">
         <img class="video-container__thumbnail" src="https://via.placeholder.com/250x141.png?text=Video Thumbnail 250px x 141px"
            alt="Video thumbnail">
      </div>
   </section>
   <section class="b">
      <div class="video-container">
         <img class="video-container__thumbnail" src="https://via.placeholder.com/250x141.png?text=Video Thumbnail 250px x 141px"
            alt="Video thumbnail">
         <img class="video-container__thumbnail" src="https://via.placeholder.com/250x141.png?text=Video Thumbnail 250px x 141px"
            alt="Video thumbnail">
         <img class="video-container__thumbnail" src="https://via.placeholder.com/250x141.png?text=Video Thumbnail 250px x 141px"
            alt="Video thumbnail">
      </div>
   </section>
</div>

关于javascript - 在 JavaScript 中向下钻取一个 obj 以获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53546524/

相关文章:

javascript - 如何识别新的 Google 身份服务库中身份验证流程的开始?

javascript - 在 JS 中对数组进行排序和过滤

jquery - 包装多个元素 (jQuery)

javascript - 从复杂字符串数组创建 JSON 对象

javascript - 无法在 html 中使用 JavaScript 页面加载功能

javascript - 将自执行函数作为值注入(inject) JS 对象

javascript - HEAD 中 LINK 和 STYLE 元素的评估顺序

php - PHP DOM 有两个 HTML 问题:1.) DOMDocument::createEntityReference $name 值和 2.) 如何向一个元素添加多个 CSS 类?

javascript - 如何在 Angular 中正确实现 DOM 操作?

javascript - 使用 getElementById 检索 CSS 中的样式