带有document.querySelectorAll和filter()的javascript函数无法正常工作

时间:2015-02-24 03:14:09

标签: javascript html

我想使用javascript删除里面带有<tr>的{​​{1}}。 (请注意,我希望解决方案只是javascript,没有jquery)

HTML结构如下:

<span class="verfied-badge">

就我所能达到的目的而言:

<tr class="project-description">
  <td colspan="6">
    <div class="project-desc-inner">
      <div class="project-synopsis">
        <p class="trunk8">This is an entry</p>
      </div>
      <div class="project-verification">
        <span class="verfied-badge"> <~~~~~~~~~~ THIS SPAN
            <span class="currency-symbol">$</span>
            <span class="icon-tick"></span>
            Verified
        </span>
      </div>
      <div class="project-actions">
        <a href="#">
            <button class="btn">LOL</button>
        </a>
      </div>
    </div>
  </td>
</tr>

我希望它能做的是,选择所有function showAlert() { document.querySelectorAll("tr.project-description").filter(document.getElementsByClassName("verfied-badge")).remove(); alert("Unwanted removed."); } ,然后从拥有tr.project-description的所有人中选择span.verfied-badge,如果确实有,请删除整个tr

但是看起来,我一直都在失败:(

希望有人可以提供帮助。

谢谢!

1 个答案:

答案 0 :(得分:1)

找到您关注的所有tr元素,然后查看它们是否包含匹配的verified-badge范围。如果他们这样做, burninate 删除它们。

window.addEventListener('load', function() {
    var projectDescriptions = document.querySelectorAll('tr.project-description'),
        projectDescriptions = Array.prototype.slice.call(projectDescriptions); 
    projectDescriptions.forEach(function(el) { 
        if (el.querySelector('span.verfied-badge')) { 
            el.parentNode.removeChild(el);
        }
    });
}); 

我在Array.prototype.slice返回的NodeList上致电querySelectorAll因为querySelectorAll没有返回数组而是NodeList,这是JavaScript令人恼火的一个(但易于解决)“类似数组的对象”。