2015-02-24 122 views
0

我想擺脫那些<tr><span class="verfied-badge">裏面使用JavaScript。 (請注意,我希望有一個解決方案,不僅是JavaScript的,沒有的jQuery)JavaScript函數與document.querySelectorAll加上過濾器()不能正常工作

的HTML結構是這樣的:

<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

,但因爲它看起來,我一直失敗:(

希望有人可以提供幫助。

謝謝!

+0

我想你想找到'span'項目,然後刪除他們的曾曾祖父母。 – sje397 2015-02-24 03:24:05

回答

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.slicequerySelectorAll返回NodeList因爲querySelectorAll不返回數組,但一個NodeList,這是JavaScript的刺激性之一(但很容易解決方法)「陣列狀物體」。

+0

它似乎是刪除''?不是'' – 2015-02-24 03:47:35

+1

@TheWolf不知道,在我的瀏覽器(Firefox 35.0.1)我留下了'

'運行它之後我。 – jdphenix 2015-02-24 04:08:45

+0

你是對的,它的奇怪也許是因爲我使用Chrome的竄改。謝謝! – 2015-02-24 04:22:46