我正在編寫一個腳本,用於選擇從節元素下降的所有段落元素。我希望它排除具有標題標籤的previousElementSibling的所有段落元素。根據previousElementSibling排除元素
腳本的工作部分,用我的測試console.logs是
var allParagraphs = document.querySelectorAll('section > p');
var firstParagraph = allParagraphs[0];
for (i=0; i < allParagraphs.length; i++) {
var prevElement = allParagraphs[i].previousElementSibling;
console.log(prevElement);
if (i !=0 && i != allParagraphs.length && i % 3 == 0) {
// Work Magic on the Paragraph Elements
}
}
我想,雖然做的是排除由標題元素之前,特別是任何段落元素。
當我運行上面的腳本時,我的console.log輸出將正確列出一切。我不知道如何實際測試「」/「h3」/ etc的值。
我嘗試使用其他一些屬性,如.localName和.nodeName。在prevElement爲空控制檯
console.log(prevElement.localName);
console.log(prevElement.nodeName);
這兩種結果的一個錯誤:當我添加那些的console.log。
我也嘗試添加:
&& prevElement != '<h3'>
到如果情況,看看是否奏效,以及「H3」 /「H3」和他們都不一樣。
有沒有辦法將h3 + p從最初的document.querySelectorAll中排除或在if/then條件中過濾出來?
注意:我不想在jQuery中這樣做。
你是如何到達那個長選擇器?爲什麼'section> p:not(h3 + p)'不起作用? – Cedon
@belinus:[':not'只允許簡單的選擇器](https://drafts.csswg.org/selectors-3/#negation) - 我喜歡用':not(h1,h2,h3,... )'但它不起作用。選擇器4草案放鬆了一下,但我認爲它還沒有實現。所以我只是把你的描述和字面翻譯爲選擇器... – Bergi
這是CSS vs JS的樂趣:P。 P:是第一個孩子需要還是可以選擇第二部分? p是部分的第一個孩子。 – Cedon