JavaScript在for循环中追加多个

JavaScript在for循环中追加多个,javascript,Javascript,有没有人知道我在做什么附加错误 function filterPosts(){ let filterValue = document.getElementById('search-filter').value.toUpperCase(); let posts = document.getElementById('posts'); let post = posts.querySelectorAll('div.post'); for (let i = 0; i < pos

有没有人知道我在做什么附加错误

function filterPosts(){
  let filterValue = document.getElementById('search-filter').value.toUpperCase();

  let posts = document.getElementById('posts');

  let post = posts.querySelectorAll('div.post');

  for (let i = 0; i < post.length; i++) {
    let filterItem = post[i].getElementsByTagName('h5')[0];
    if (filterItem.innerHTML.toUpperCase().indexOf(filterValue) > -1) {
        post[i].append();
    } else {
        post[i].remove();
      
    }
  }
}
函数filterPosts(){
让filterValue=document.getElementById('search-filter').value.toUpperCase();
让posts=document.getElementById('posts');
让post=posts.queryselectoral('div.post');
for(设i=0;i-1){
post[i].append();
}否则{
post[i].remove();
}
}
}
我试过几种不同的方法,但都没用。我正在尝试根据类型删除元素,然后根据标题读取它们(如果它们存在)。

for(让I=0;Ifor (let i = 0; i < post.length; i++) {
    let filterItem = post[i].getElementsByTagName('h5')[0];
    if (filterItem.innerHTML.toUpperCase().indexOf(filterValue) > -1) {
        posts.appendChild(post[i]);
    } else {
        post[i].remove();
    }
  }
让filterItem=post[i].getElementsByTagName('h5')[0]; if(filterItem.innerHTML.toUpperCase().indexOf(filterValue)>-1){ 职位.附件(职位[i]); }否则{ post[i].remove(); } } 这最终用于过滤,但如果文本框是退格或空的,它不会返回帖子。

您可以使用(比append有更好的浏览器支持),并且-在您的情况下,这看起来像
posts.appendChild(post[i])
posts.removeChild(post[i])

您也可以只更改元素的可见性-这对于您的案例来说应该更快更简单。 另一种方法是使用一个包含所有POST数据的数组,并主要使用它。这样你也可以“带回数据”。 每次过滤器更改时:通过过滤post数据创建一个新数组,删除所有post元素,然后仅附加与过滤数据匹配的元素,例如

let postsData = ["content1", "content2"];
for (let i = 0; i < post.length; i++) {
  post[i].remove();
}
postsData.filter(function (post) {
 return post.toUpperCase().indexOf(filterValue) > -1;
}).forEach(function () {
  var postElem = document.createElement("div");
  posts.appendChild(postElem);
});
让postsData=[“content1”,“content2”];
for(设i=0;i-1;
}).forEach(函数(){
var postElem=document.createElement(“div”);
posts.appendChild(postElem);
});

Append…什么?你没有说。你到底想实现什么?在普通javascript中,使用
target.appendChild(元素)
我将div分类为post,在posts的div ID中。其中包括一个员额内的h5。它们被触发,根据我正在使用的下拉列表进行过滤,但我也试图确保,如果有人键入了某个内容,并且该内容与h5元素匹配,则这些帖子将保留,而其他帖子将从DOM中删除,反之亦然,如果有人决定在文本框上退格,它应该显示所有帖子。您必须将参数添加到
append