2017-06-26 47 views
0

我有一個使用多個樣式標籤的HTML文檔。其中的一個款式有以下內容閱讀樣式表中的類名稱

<style id='pstyle'> 
.p0010, .p0016, .p0022, .p0028, .p0032, 
.p0034, .p0038, .p0042, .p0044, .p0046, 
.p0048, .p0050, .p0052, .p0054, .p0056, 
{ 
max-width:100%; 
background-size:100%; 
background-image: url('sprites.png'); 
} 
</style> 

document.styleSheets允許我使用完整的文檔使用樣式表。從那裏 - 一旦我抓住了正確的樣式表 - 我可以使用cssRules數組屬性來訪問每個包含樣式的selectorText屬性。但是,我一直無法弄清楚如何找到「正確」的樣式表。雖然我可以給樣式表一個id這不會作爲document.styleSheets [n]對象的屬性。

我做了大量的DOM操作,但它主要是在文檔中的視覺元素。我會非常感激的人誰可以告訴我怎麼去識別「正確」的樣式表


任務

一的純英文版本。找到樣式元素 - 記住將會有其他人 - 編號爲pstyle b。閱讀其中定義的類名稱並執行任何操作

+0

當你說_TO找到 「正確」 的風格sheet_,這是什麼到底意味着什麼? – LGSon

+0

對不起,如果問題不明確。我已經提出了一個澄清 – DroidOS

+0

好吧,因爲不止一次使用相同的id是有效的,所以'style'標籤需要唯一的id。但是,不明白你的意思與_find的樣式element_。恐怕你必須發佈一個僞代碼樣本來更好地解釋你真正的想法。 'styleSheets'也有這些屬性:https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet – LGSon

回答

1

我不確定要了解是否要獲取與<style>元素關聯的樣式表,或者是否想從樣式表中檢索元素。

所以在這裏,你會得到兩個:

// from the element 
 
console.log(pstyle.sheet === document.styleSheets[2]); 
 
// from the stylesheet 
 
console.log(document.styleSheets[2].ownerNode === pstyle);
<style id='pstyle'> 
 
</style>

注意,在片段是[2]因爲stacksnippet並注入樣式表

現在拿到cssRules和selectorText,你只需要從選定的樣式表中讀取它:

var pstyle = document.getElementById('pstyle'); 
 

 
// from the element 
 
console.log(pstyle.sheet.cssRules[0].selectorText); 
 

 
// from the stylesheets 
 
for(var sheet of document.styleSheets){ 
 
    if(sheet.ownerNode === pstyle){ 
 
    console.log(sheet.cssRules[0].selectorText); 
 
    } 
 
    }
<style id='pstyle'> 
 
.p0010, .p0016, .p0022, .p0028, .p0032, 
 
.p0034, .p0038, .p0042, .p0044, .p0046, 
 
.p0048, .p0050, .p0052, .p0054, .p0056 
 
{ 
 
max-width:100%; 
 
background-size:100%; 
 
background-image: url('sprites.png'); 
 
} 
 
</style>

+0

謝謝你的答案。也許我不太清楚,所以我現在進行澄清。最終,樣式表的'id'不感興趣。我只是希望我能夠以這種方式在衆多其他人中找到這種風格元素。我真正想要的是在那裏定義的類名。 – DroidOS

+0

@DroidOS我不知道我得到它......你在你的問題中說你確實知道如何獲得這些selectorText。你似乎錯過的是如何找出你正在閱讀的styleSheet,我的原始答案顯示了這一點。儘管如此,我添加了一個完整的代碼片段,其中有兩種方法來獲取您的selectorText。但是現在我想知道如果你的問題不是簡單地說你的原始代碼片段中的CSS規則是無效的(你在選擇器末尾有一個','應該不在那裏)。 – Kaiido

+0

謝謝 - 我缺少的一點:我沒有意識到'style'元素的'sheet'屬性。 – DroidOS