我正在研究如何创建一个下拉菜单,一旦选择了一个选项,而不是跳转到一个新页面,你通过一个锚标签向下滚动页面,但我无法想出来。
到目前为止,我的逻辑是将下拉列表设置为变量。取变量和onchange,将其与当前位置进行比较,只要位置不是“0”,尝试使其跟随锚点链接,就好像我正在加载新页面一样。有人可以帮我解决我所缺少的事情吗?
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;
}
};
答案 0 :(得分:2)
您无法将锚标记放入<select>
元素中。但我认为您遇到的问题是,当您使用window.location.href
时,您正在使用window.location.hash
。
我创建了这个维护锚标签但使用哈希的小提琴。我必须更新"value="
的值以匹配您希望浏览器滚动到的id
。
答案 1 :(得分:2)
这是一个简单的例子。
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>