2016-12-26 65 views
0

我想刪除一個頁面下面的div我的Chrome擴展從HTML移除格在Chrome擴展

HTML(除去)

<div class="base-popup js-base-popup"><div class="js-obscurity base-popup__obscurity"></div> 
<div class="base-popup__indent"></div> 
<div class="base-popup__wrap"> 
    <div class="base-popup__container clearfix base-popup__container -decor" style="width:500px;"> 


       <i class="s-icon -m -close base-popup__close js-close"></i> 


     <div class="base-popup__content js-content"><div><div class="s-text">Sample Text. 
    <!-- close tag --> 
    </p> 
    <!-- close tag in translate --> 
</div></div></div> 
    </div> 

這裏是JS在我的內容腳本中

function removeElementsByClassName(names) { 
     var els = document.getElementsByClassName(names), 
      i, element; 
     for (i = els.count - 1; i > 0; i -= 1) { 
      element = els[i]; 
      element.parentElement.removeChild(element); 
     } 
    } 

removeElementsByClassName('base-popup js-base-popup'); 

回答

2

getElementsByClassName只接受單個類名稱,但您要給它兩個。既然你只已經證明了HTML具有帶有要麼你正在使用的兩個類的,如果這就是你要刪除的唯一元素一個元素,隨便挑一個:

removeElementsByClassName("base-popup"); 
// or 
removeElementsByClassName("js-base-popup"); 

或者,你可以使用querySelectorAll用CSS選擇器:

function removeElementsBySelector(selector) { 
    var els = document.querySelectorAll(selector), 
     i, element; 
    for (i = els.count - 1; i > 0; i -= 1) { 
     element = els[i]; 
     element.parentElement.removeChild(element); 
    } 
} 

然後,如果你想刪除具有要麼類元素:

removeElementsBySelector('.base-popup, .js-base-popup'); 

或者,如果你只是想刪除具有類的單個元素:

removeElementsBySelector('.base-popup.js-base-popup'); 

而且因爲這是一個Chrome擴展,你可以做到這一點,而更簡單地Array.fromforEachElement#remove

function removeElementsBySelector(selector) { 
    Array.from(document.querySelectorAll(selector)).forEach(element => { 
     element.remove(); 
    }); 
} 
+0

這兩者似乎都不適合我。我想從上面的html中刪除所有的東西。基本上''div class =「base-popup js-base-popup」>'class以及其中的任何東西 – user2650277

+1

檢查http://pastebin.com/ydXhasjQ – user2650277

+0

@ user2650277您是否等待窗口onload? (window.onload = function(){你的代碼}; –

1

你的javascript是完全錯誤的。正確的方法:

function removeElementsByClassName(names){ 
    names=names.split(" ");//you just get elems by one class so you need to split it into multiple operations 
    for(var a=1;a<names.length;a++){//ability to remove multiple classes 
    removeElementsByClassName(names[a]); 
    } 
    var els = document.getElementsByClassName(names[0]); 
    for (var i =0; i<els.length ; i++) { // its length not count 
     var element = els[i]; 
     element.parentElement.removeChild(element); 
    } 
} 

removeElementsByClassName('base-popup js-base-popup'); 

這個刪除包含這些類之一的所有元素,如果你想做某事別人看到其他的解決方案。