使用Javascript删除没有id或类的div

时间:2010-11-23 06:44:51

标签: javascript html

我的wordpress博客遇到了语法荧光笔演变插件的问题,而且这个奇怪的div元素突然出现了:

<div style="z-index: -1; position:absolute; top:0px; left: 0px; width: 100%; height: 4031px;"></div>

这会导致我的页面扩展,在页面末尾创建一个大空间。这也可以在每个wordpress博客上找到。有趣的是,只有chrome看到(使用Inspect Element)。我已经尝试过IE9开发者工具和FF firebug,div不在那里,我的页面也没问题。

注意:我已经发布了单独的问题here。我的问题与此不同。

我想解决这个小问题,我想起来就是为了这个而使用JavaScript。我想要做的是:使用javascript删除div

很容易删除带有ID或类的div,但这个没有任何。我也不想影响所有其他div。我怎么能做到这一点?

P.S。它没有父ID或类。它就在容器类div之后。它的父亲是<body>

编辑:这是html: alt text

4 个答案:

答案 0 :(得分:2)

如果它总是持续或接近最后,你可以使用jQuery或普通的CSS3选择器

$('body > div:last-child').remove();

OR

$('body > div:nth-last-child(n)').remove();

有关CSS3 Selectors.remove()

的更多信息

或者你可以使用CSS,即

body > div:last-child (or div:nth-last-child(n)) {
  display: none;
}

答案 1 :(得分:1)

如果您使用的是jQuery,则可以使用可能已定义ID或类的父级或同级div来引用div。

例如:

<div id="parentDIVID">

  <div>your problem div</div>

</div>


Then you can use jQuery to reference your problem div like this : $("#parentDIVID > div")

如果你可以提供更多关于你的问题div的html代码,我们可以构建一个适合你的jQuery选择器。

更新:根据提供的标记

function removeDiv() {

    var parent = document.getElementById("stimuli_overlay").parentNode;

    var children = document.getElementById("stimuli_overlay").parentNode.childNodes;

    for (var i = 0; i < children.length; i++) {

        if (children[i].style.zIndex == -1)
            parent.removeChild(children[i]);
    }


}

答案 2 :(得分:1)

你可以这样做:

var els = document.getElementsByTagName('div');
for (var i = 0; l = els.length; i < l; i++) {
  if (els[i].innerHTML == 'style....') {
    els[i].parentNode.removeChild(els[i]);
  }
}

答案 3 :(得分:1)

更新:基于您不能依赖下面使用的div的事实。

如果div确实是文档中的始终是最后一个div ,这实际上更容易:

var divs, div;
divs = document.getElementsByTagName("div");
if (divs.length > 0) {
    div = divs.item(divs.length - 1);
    div.parentNode.removeChild(div);
}

Live example

length - 1将删除文档中的最后一个div。如果您需要跳过灯箱div或其他内容,请调整为使用- 2- 3等。

使用以前的信息

旧答案

鉴于这种结构,这些内容如下:

// Get the div that follows it, which conveniently has an ID
var div = document.getElementById('stimuli_overlay');

// If that worked...
if (div) {
    // ...move to the previous div, with a bit of paranoia about blank non-element
    // nodes in-between
    div = div.previousSibling;
    while (div && (div.nodeType !== 1 || div.tagName !== "DIV")) {
        div = div.previousSibling;
    }

    // Check that this really is the right div
    if (div && div.tagName === "DIV"
        // The following checks look for some of the style properties that your
        // screenshot shows are set on the div
        && div.style.position == "absolute"
        && div.style.zIndex == "-1"
        && div.style.top == "0px"
        && div.style.left == "0px"
        && div.style.width == "100%"
        && /* ...possibly more checks here... */) {
        // Remove it
        div.parentNode.removeChild(div);
    }
}