【问题标题】:Navigate inside collapse menu with HREF tag使用 HREF 标记在折叠菜单内导航
【发布时间】:2020-12-17 05:18:14
【问题描述】:

我正在尝试使用 javascript 制作一个可折叠的 div,您可以在其中使用 href="#one" 标签导航和打开可折叠的 div。我尝试将 href 放在 div 内,但没有结果。我也尝试过制作

里面的 div 到一个锚文本,但仍然没有成功。但是我做的折叠不会在标签上打开,只能导航到它的区域,同时仍然被隐藏。

<div class="box" id="one "> <h1> Object One </h1> </div>
<button type="button" class="collapsible" > <a href="#one"> Read more </a> </button>
<div class="content" href="#one"> 

<p> Lorem ipsum dolor sit amet, consectetur adi
pisicing elit, sed do eiusmod tempor incidid
unt ut labore et dolore magna aliqua. Ut enim ad mini
m veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>

</div>

javascript

var coll = document.getElementsByClassName("collapsible");
var i;

for (i = 0; i < coll.length; i++) {

coll[i].addEventListener("click", function() {

this.classList.toggle("active");

var content = this.nextElementSibling;

if (content.style.display === "block") 
{
content.style.display = "none";
} else {
content.style.display = "block";
}
});
}

Jsfiddle:https://jsfiddle.net/wbyux172/1/

希望我能得到一些帮助:)

【问题讨论】:

  • 您不能将a 嵌套到button 中,这本来就是无效的HTML。 Div 没有href 属性。而且我不明白该属性的相关性应该是什么?您没有使用它来选择任何元素。
  • 是的,我明白这一点,这就是它不起作用的原因。问题是:这样做的正确方法是什么?当有人访问 website.com/#one 时,我该如何做到这一点,他们会被导航到折叠(打开)的 div?

标签: javascript html css collapse


【解决方案1】:

您可以使用 name 属性(或 id 属性创建指向命名锚点链接 )。

在同一文档内链接时,A元素设置如下。

<a href="#anchorname">linked text</a>

(Target point)
<a name="anchorname">a named anchor</a>

click here 查看带有解释的工作示例。

查看此工作示例:

var cols = document.querySelectorAll(".collapsible");
cols.forEach((col) => {
  col.addEventListener("click", function() {
    this.classList.toggle("active");
    var contentArea = this.nextElementSibling;
    var content = contentArea.querySelector('.content');
    if (content.style.display === "block") {
      content.style.display = "none";
    } else {
      content.style.display = "block";
    }
  });
});
.collapsible {
  background-color: #dedede;
  border-top-left-radius: 5px;
  border-top-right-radius: 5px;
}

.collapsible a{
  text-decoration: none;
  font-size: 16px;
  font-weight: bold;
  cursor: pointer;
}

.content-area .content {
  border: 1px solid #dedede;
  display: none;
  padding: 10px;
}
<div class="box" id="one "><h1>Object One</h1></div>
<button type="button" class="collapsible" >
  <a href="#section1">Read more</a>
</button>
<div class="content-area">
  <a name="section1"></a>
  <div class="content">
    <p> Lorem ipsum dolor sit amet, consectetur adi
  pisicing elit, sed do eiusmod tempor incidid
  unt ut labore et dolore magna aliqua. Ut enim ad mini
  m veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
  </div>
</div>

【讨论】:

  • 感谢您的回答!我想你误解了我的目标:) 你发送的代码是用于可折叠的,我知道如何开始工作。我遇到问题的功能是添加,因此当您访问例如 website.com/#one 时,您会被定向到折叠(打开)的可折叠文件。我可以让它导航到box-div,但也不能打开可折叠的东西。你知道这样做的方法吗? :)
  • @benimsson 是的,知道了。我知道答案,我会更新例子。
  • @benimsson 我已经更新了示例,检查这是否可以帮助您解决问题。
猜你喜欢
  • 2010-11-22
  • 1970-01-01
  • 2018-08-23
  • 1970-01-01
  • 2018-12-14
  • 2018-04-18
  • 1970-01-01
  • 2019-12-23
  • 2017-05-24
相关资源
最近更新 更多