javascript - 如果没有匹配的内容,则删除元素及其值

标签 javascript html

如果值“banana”与第 1 列中的元素“li”不匹配第 2 列中的任何值,我将尝试将其删除,但如果存在匹配值,则不应将其删除。

不知道如何使用 javascript/jquery 来实现它。

这是我到目前为止已经开始的:

<div class="container">
  <div class="column1">
  <ul>
  <li>apple</li>
  <li>banana</li> <!-- remove this element along with its value  if there is no matching content in column2 -->
  <li>orange</li>
  <li>lemon</li>
  </ul>
  </div>
  
  <div class="column2">
  <ul>
  <li>apple</li> 
  <li>banana</li> 
  <li>orange</li>
  <li>lemon</li>
  </ul>
  </div>
</div>

https://jsfiddle.net/Rgohing/wq3knp4z/

感谢我能得到的任何帮助。

最佳答案

解决方案

  • 要解决此问题,首先从第二个列表中获取所有值并将其存储在数组中。

  • 然后检查第一个列表的元素并检查第二个列表是否包含此元素,如果不包含则删除此元素

let compArr = [];
document.querySelectorAll('.column2 > ul > li').forEach((val) => {
  compArr.push(val.childNodes.item(0).nodeValue);
});


document.querySelectorAll('.column1 > ul > li').forEach((val, ind) => {
  if(!compArr.includes(val.childNodes.item(0).nodeValue)){
    val.remove();
  }
});
<div class="container">
  <div class="column1">
  <ul>
  <li>apple</li>
  <li>banana</li> <!-- remove this element along with its value  if there is no matching content in column2 -->
  <li>orange</li>
  <li>lemon</li>
  </ul>
  </div>
  
  <div class="column2">
  <ul>
  <li>apple</li> 

  <li>orange</li>
  <li>lemon</li>
  </ul>
  </div>
</div>

关于javascript - 如果没有匹配的内容,则删除元素及其值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65597582/

相关文章:

javascript - AJAX - JSON 未定义(jQuery、NodeJS)

javascript - mac 窗口加载并不总是触发

javascript - Angular2 属性指令属性

javascript - 为什么条形图与 "inverted values"一起出现? d3.js

javascript - 如何从动态生成的 html 中捕获属性 id?

html - Textarea 不填充父 div 的高度

javascript - npm start 与 Node app.js

php - 在 PHP block 内使用 Javascript 设置 HTML 文本框的值(使用 echo)

javascript - 声明属性为假的正确方法是什么?

html - 渲染 firefox 图像的差异