下拉列表中的锚标记
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
。
这是一个简单的例子。
P.S: 避免 anchor
在 option
.
内
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
我正在研究如何创建一个下拉菜单,一旦选择了一个选项,您就可以通过锚标记向下滚动页面,而不是跳转到新页面,但我无法弄清楚。
到目前为止,我的逻辑是将下拉列表设置为一个变量。获取该变量和 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
。
这是一个简单的例子。
P.S: 避免 anchor
在 option
.
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