【问题标题】:Anchor tag in Drop down下拉列表中的锚标记
【发布时间】:2016-08-18 14:29:50
【问题描述】:

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

到目前为止,我的逻辑是将下拉列表设置为变量。拿那个变量和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;
}
};

【问题讨论】:

    标签: javascript html css drop-down-menu anchor


    【解决方案1】:

    这是一个简单的例子。

    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> 

    【讨论】:

    • 有没有一种简单的方法可以使用 vanilla js 使滚动平滑?
    【解决方案2】:

    您不能将锚标记放入&lt;select&gt; 元素中。但我认为你遇到的问题是你使用window.location.href,而你应该使用window.location.hash

    我创建了这个维护锚标记但使用哈希的小提琴。我必须更新"value=" 的值以匹配您希望浏览器滚动到的id

    https://jsfiddle.net/jqcdyv2b/

    【讨论】:

    • 啊,我明白了。但这与选择中的锚标签一起起作用,不是吗?
    • 我不会添加它们,因为它们没有被使用。它因 JS 代码和选项元素上的 value 而发生变化。在这种情况下,删除 &lt;a&gt; 标记不会破坏任何内容。这是一个更新版本(并删除了警报):jsfiddle.net/jqcdyv2b/1
    • 您的&lt;p&gt; 元素中也不需要&lt;a&gt; 标签。 hrefhash 值与元素的 id 无关。
    • 有没有一种简单的方法可以使用 vanilla js 使滚动平滑?
    【解决方案3】:

    我有一些建议。

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

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

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

    https://select2.org/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-01
      • 2011-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-25
      相关资源
      最近更新 更多