2010-11-23 87 views
1

我的WordPress博客是具有語法高亮問題演變插件,而且有這種怪異的div元素凸顯:刪除一個div沒有ID或類使用Javascript

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

這將導致我的網頁延伸,在頁面末尾創建一個大空間。這也可以在每個WordPress博客上找到。有趣的是,只有鉻看到(使用檢查元素)。我已經在IE9開發人員工具和FF螢火蟲中試過,div不在那裏,我的頁面也沒問題。

備註:我已經發布了一個單獨的問題here。我的問題與此不同。

我想解決這個小問題如此糟糕,我想到了使用JavaScript來做到這一點。我想要做的是:使用javascript刪除div。

這很容易刪除一個ID或類的股利,但這一個沒有任何。我也不想影響所有其他divs。我怎樣才能做到這一點?

P.S.它沒有父ID或類。它緊跟在容器類div之後。它的父母是<body>

編輯:這裏的HTML: alt text

+0

您能否提供一些背景知識?任何父元素都有`id`。它是在一個獨特的嵌套級別,即沒有其他`div`兄弟姐妹? – alex 2010-11-23 06:47:52

+0

您確定標籤屬性在文本節點中(即:開始和結束標籤之間)嗎? – Mathew 2010-11-23 06:49:02

+0

@alex它沒有父ID或類。它緊跟在容器類div之後。它的父母是``。 – Ruel 2010-11-23 06:51:23

回答

1

如果它總是在最後或接近最後你可以使用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

如果你使用jQuery,您可以參考使用父母或兄弟姐妹的div可能有定義的ID或類股利。

對於examample:

<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]); 
    } 


} 
0

你可以做這樣的事情:

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]); 
    } 
} 
1

更新:基於這樣的事實,你不能依賴於下面使用的股利。

如果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在文檔中。如果您需要跳過一個燈箱股利或什麼的,調整使用的是早期信息使用- 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); 
    } 
} 

相關問題