使用javascript删除任何特定的html代码

时间:2018-07-19 09:09:23

标签: javascript jquery html

过去,我使用Google Developer Console删除页面上的某些特定div。我当然可以手动执行此操作,但是在某些情况下,div必须使用许多控制台。我只有一个行代码即可完成这项工作(我在搜索互联网时就找到了它),但我丢失了笔记。

那么我该如何使用javascript删除任何html代码(通过复制粘贴代码)。

类似:

elements = $('<div ... </div>');
elements.remove();

OR

$('<div  ... </div>').remove();

有什么想法吗?我不是javascript专家(很明显),并且我一直在搜索stackoverflow数小时,却找不到任何可行的方法。

更新:我认为有些人可能会对我的问题感到困惑。 Google Developer Console接受javascript命令行。因此,即使我要求使用javascript,我也会在Google开发人员控制台上使用该代码。

更新2

这是我需要删除的div的示例。请记住,我想将整个代码复制粘贴到javascript代码中。 不是,只是确定div。

<div class="entry-status-overlay" data-entry-status="declined">
            <div class="entry-status-overlay__inner">
                <span class="entry-status-overlay__title">Declined</span>
            </div>
        </div>

是data-entry-status =“ declined”使该div唯一,所以我不能仅使用id选择器或类选择器来标识div。我需要把有趣的东西放在那里,并删除它。

我尝试过:

$('<div class="entry-status-overlay" data-entry-status="declined"><div class="entry-status-overlay__inner"><span class="entry-status-overlay__title">Declined</span></div></div>').remove();

它没有删除div。

6 个答案:

答案 0 :(得分:2)

您不能仅通过粘贴代码来完成。这将删除所有div元素。

您可能需要特定的选择器,例如idclasschild to specific parent才能从dom中删除元素。

请考虑这种情况,div具有通用类,但数据输入状态不同。因此,您可以使用选择器获取dom,然后检查数据集属性。

对于演示,我将其放在setTimeout中以显示差异。在应用程序中,您可以避免

setTimeout(function() {

  document.querySelectorAll('.entry-status-overlay').forEach(function(item) {
    let getStatus = item.dataset.entryStatus;
    if (getStatus === 'declined') {
      item.remove()
    }
  })
}, 2000)
<div class="entry-status-overlay" data-entry-status="declined">
  <div class="entry-status-overlay__inner">
    <span class="entry-status-overlay__title">Declined</span>
  </div>
</div>

<div class="entry-status-overlay" data-entry-status="accepted">
  <div class="entry-status-overlay__inner">
    <span class="entry-status-overlay__title">accepted</span>
  </div>
</div>

答案 1 :(得分:2)

尝试通过其externalHTML搜索dom。

function deleteDomByHtml(html){
    html=html.replace(/\s/g,'');
    $("*").each(function(){
       if(this.outerHTML.replace(/\s/g,'')===html){
           $(this).remove();
       }
    });
}

并在此页面上尝试以下行:

deleteDomByHtml(`<span class="-img _glyph">Stack Overflow</span>`);

答案 2 :(得分:1)

只需使用=B1 + C1 添加任何属性,它将删除该元素。

[]
$('[class="entry-status-overlay"]').remove();
/*OR*/
$('[data-entry-status="declined"]').remove();

答案 3 :(得分:1)

function del(){
   var h =  document.body.outerHTML; 
   h = h.match('<div>...</div>');
   h.length--;
   return h;
}

我想这会起作用,只是尝试一下...我在浏览器控制台上尝试了一下,并且它起作用了,这样您就可以匹配您想要的确切值。

答案 4 :(得分:0)

我不妨加我的看法。尝试在控制台中运行它,然后问题消失。

// convert the whole page into string
let thePage = document.body.innerHTML,
string = [].map.call( thePage, function(node){
return node.textContent || node.innerText || "";
}).join("");

// I get some string. in this scenario the Question or you can set one yourself
let replacableCode = document.getElementsByClassName('post-layout')[0].innerHTML,
string2 = [].map.call( replacableCode, function(node){
return node.textContent || node.innerText || "";
}).join("");

// replace whole page with the removed innerHTML string with blank
document.body.innerHTML = thePage.replace(replacableCode,'');

答案 5 :(得分:-1)

如果要使用该特定数据属性标识div,则可以使用数据属性选择器。在下面的示例中,我使用了一个按钮和click事件来使演示更加直观,但是在控制台中,您唯一需要的行是:

$('div[data-entry-status="declined"]').remove();

$(function() {
  $("#testbutton").click(function() {
    $('div[data-entry-status="declined"]').remove();
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="entry-status-overlay" data-entry-status="declined">
            <div class="entry-status-overlay__inner">
                <span class="entry-status-overlay__title">Declined</span>
            </div>
        </div>
        <div id="x">Some other div</div>
        <button type="button" id="testbutton">Click me to test removing the div</button>

有关属性选择器的文档,请参见https://api.jquery.com/category/selectors/attribute-selectors/

P.S。您将一些原始HTML粘贴到jQuery构造函数中,然后对其执行“删除”的想法行不通-您告诉jQuery根据HTML字符串创建一个对象,就其而言,该对象是一个新的 HTML集。它不会尝试将其与页面上现有的内容进行匹配,即使该确切的HTML位于DOM中的某个位置,也不会引起注意。它会将您刚刚给它的内容视为完全独立。因此,当您在新HTML上运行.remove()时,该HTML从未添加到页面中,因此无法将其删除。因此.remove()在这种情况下不起作用。