代码之家  ›  专栏  ›  技术社区  ›  bafix2203

在javascript中对数据排序

  •  0
  • bafix2203  · 技术社区  · 5 年前

    data 从javascript,我必须排序后,点击它。这是我的密码:

    const data = [
      {
        "id": 2,
        "title": "ASD",
        "src": "https://cloudfour.com/examples/img-currentsrc/images/kitten-small.png"
      },
      {
        "id": 1,
        "title": "FGH",
        "src": "https://cloudfour.com/examples/img-currentsrc/images/kitten-small.png"
      }
    ]
    const info_container = document.querySelector('.info-container')
    
    const sort = () => {
      data.sort((a, b) => parseFloat(a.id) - parseFloat(b.id))
    
      fetchData()
    }
    
    const fetchData = () => {
      data.forEach((item, index) => {
      const img = document.createElement("img");
      const title = document.createElement('h3')
    
      const node = document.createTextNode(item.src);
      const node_title = document.createTextNode(item.title)
    
      title.appendChild(node_title)
      img.src = item.src
    
      info_container.appendChild(title)
      info_container.appendChild(img);
    
    })
    }
    window.onload = function() {
      fetchData()
    }
    

    <div><button onclick="sort()">sort</button></div>
      <div class="info-container">    
    </div>
    

    http://plnkr.co/edit/Yjn4jaLN45pYJHFZBZLn?p=preview

    不是更新我的实际视图,而是创建一个新的视图,如何修复?

    提前谢谢你的回答!

    0 回复  |  直到 5 年前
        1
  •  3
  •   Jack Bashford    5 年前

    你需要重置 info_container fetchData 称为:

    const fetchData = () => {
      info_container.innerHTML = "";
      //Rest of the code
    }
    

    Modified Plunker

        2
  •  -1
  •   KKoku    5 年前
    1. 奇怪的是你不放开你的手 info_container 每点击一次,孩子的数量就会增加。你想替换你的 信息容器

    2. 第二种措辞在代码中可能会有所帮助,只是一个小的注释,您的fetchData根本不获取任何东西