2017-08-14 56 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'; 
    } 
} 
相关问题