2017-08-14 43 views
0

我想添加一個「秀」或依賴,如果它的父細節標籤是開放的每個彙總標籤「隱藏」標題:如果每個摘要標籤的父級詳細信息標籤打開,則設置標題屬性?

<details open> 
     <summary>Summary 1</summary> 
     <p>text 1</p> 
</details> 

<details open> 
     <summary>Summary 2</summary> 
     <p>text 2</p> 
</details> 

我試過,但它只能顯示「隱藏」即使細節未設置打開:

var detailsElem = document.getElementsByTagName('details'); 
var summaryElem = document.getElementsByTagName('summary'); 

for (i = 0; i < summaryElem.length; i++) { 
    if (detailsElem[i].display === '') { 
    summaryElem[i].title = 'show'; 
    } else { 
    summaryElem[i].title = 'hide'; 
    } 
} 
+0

我會假設'detailsElem [I]。顯示=== '''總是計算爲false,因此''hide''。什麼是「顯示」應該是什麼?這可能只是「未定義」。 – user1777136

+0

我很困惑。我看到詳細信息的默認css設置是display:block。我試了一下detailsElem [i] .display ==='block',但是它會給出一個'show'的標題,不管它是否公開。請提醒您該做什麼。 – JAT86

回答

0

我假設您正試圖訪問元素css屬性。如果是這樣,那麼這行是錯誤的detailsElem[i].display === ''。它應該是detailsElem[i].style.display

display不能爲空和值可以是displayinlineinline-displaynone ...

這裏是更好的解決方案來訪問元素的CSS屬性。使用getComputedStyle()方法來獲取計算樣式

var detailsElem = document.getElementsByTagName('details'); 
var summaryElem = document.getElementsByTagName('summary'); 

for (i = 0; i < summaryElem.length; i++) { 
    var style = getComputedStyle(detailsElem[i]); 
    if (style.display === 'none') { 
    summaryElem[i].title = 'show'; 
    } else { 
    summaryElem[i].title = 'hide'; 
    } 
} 
相關問題