繁体   English   中英

为每个摘要标签设置标题属性(如果其父详细信息标签已打开)?

[英]Setting title attribute for each summary tag if its parent details tag is open?

我想为每个摘要标签添加一个“显示”或“隐藏”标题,这取决于其父详细信息标签是否打开:

<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';
  }
}

我假设您正在尝试访问元素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';
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM