下拉列表中的锚标记

Anchor tag in Drop down

我正在研究如何创建一个下拉菜单,一旦选择了一个选项,您就可以通过锚标记向下滚动页面,而不是跳转到新页面,但我无法弄清楚。

到目前为止,我的逻辑是将下拉列表设置为一个变量。获取该变量和 onchange,将其与当前位置进行比较,只要位置不是“0”,就尝试使其跟随锚点 link,就像我让它加载新页面一样。有人可以帮我解决我所缺少的吗?

HTML:

<select name="dropDown" id="dropDown">
<option value="one"><a href="#heading1">one</a></option>
<option value="two"><a href="#heading2">two</option>
<option value="three">three</option>
</select>


<p id="heading1"><a name="heading1">Heading one</a></p>

<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br    /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />    <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />    <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> <br /><br /><br /><br /><br />

<p id="heading2"><a name="heading2">Heading 2</a></p>

JS:

var dropDownValue = document.getElementById("dropDown");

dropDownValue.onchange = function()
{
if(this.selectedIndex !== 0)
{
    window.location.href=this.value;
}
};

您不能将锚标记放入 <select> 元素中。但是我认为您遇到的问题是您在应该使用 window.location.hash.

时使用 window.location.href

我创建了这个 fiddle,它保留锚标记但使用散列。我必须更新 "value=" 的值以匹配您希望浏览器滚动到的 id

https://jsfiddle.net/jqcdyv2b/

这是一个简单的例子。

P.S: 避免 anchoroption.

var dropDownValue = document.getElementById("dropDown");

dropDownValue.onchange = function() {
  if (this.selectedIndex !== 0) {
    window.location.href = this.value;
  }
};
p {
  min-height: 500px;
}
<select name="dropDown" id="dropDown">
  <option value="#heading1">one</option>
  <option value="#heading2">two</option>
  <option value="#heading3">three</option>
</select>

<p id="heading1"><a name="heading1">Heading one</a>
</p>
<p id="heading2"><a name="heading2">Heading two</a>
</p>
<p id="heading3"><a name="heading3">Heading three</a> 

我有一些建议。

方法一:可以使用下拉导航

https://getbootstrap.com/docs/5.1/components/dropdowns/

方法二:也可以使用select2.js

https://select2.org/