【问题标题】:how to get a specific string in an href in javascript如何在javascript中的href中获取特定字符串
【发布时间】:2021-05-16 11:38:13
【问题描述】:

我正在尝试创建一个 onload 事件,其中函数将当前 URL 与 href 进行比较,并根据显示的 href 显示内容。我想通过从父母中选择一个孩子来实现这一点,尽管我不确定如何具体获取 href 中的内容。这是我写的一些代码:

html

<ul id="main-nav">
      <li class="nav active"><a href="#shipping">Shipping</a></li>
      <li class="nav"><a href="#returns">returns</a></li>
      <li class="nav"><a href="#custom">Custom Orders</a></li>
      <li class="nav"><a href="#replacements">Replacements/ Warranty</a></li>
      <li class="nav"><a href="#mostFAQs">Most Frequently Asked Questions</a></li>
      <li class="nav"><a href="#RAD">RAD Principles</a></li>
      <li class="nav"><a href="#environmental">Environmental Stewardship</a></li>
      <li class="nav"><a href="#USA">MADE in the USA</a></li>
</ul>

js

var href = $("#main-nav").children('a');

$("div.faq-container").hide();

if (window.location.href.includes(href)) {
    $("div.faq-container").eq("0").show();
} else (window.location.href.includes(href)) {
    $("div.faq-container").eq("1").show();
}

我遇到的主要问题是我想写有

var href = $("#main-nav").children('a');

这样它就只抓取 href 内的内容,除此之外没有其他内容,因此它的值将是“#shipping”、“#returns”等。

【问题讨论】:

    标签: javascript jquery href var


    【解决方案1】:

    这是一个普通的 JavaScript 示例,它将使所选部分可见。

    它使用hashchange 事件来检测哈希何时发生变化。

      const sections = [...document.querySelectorAll('.section')];
      function showSelected () {
        sections.forEach(section => section.classList.remove('show'));
        if(location.hash.length) {
          const section = document.querySelector(location.hash);
          if (section) {
            section.classList.add('show');
          }
        }
      }
      window.addEventListener('hashchange', showSelected);
        .section {
          margin: 0.5rem;
          padding: 0.5rem;
          background-color: #e0e0e0;
          width: 10rem;
          display: none;
        }
        .show {
          display: block;
        }
    <ul id="main-nav">
      <li class="nav active"><a href="#shipping">Shipping</a></li>
      <li class="nav"><a href="#returns">returns</a></li>
      <li class="nav"><a href="#custom">Custom Orders</a></li>
      <li class="nav"><a href="#replacements">Replacements/ Warranty</a></li>
      <li class="nav"><a href="#mostFAQs">Most Frequently Asked Questions</a></li>
      <li class="nav"><a href="#RAD">RAD Principles</a></li>
      <li class="nav"><a href="#environmental">Environmental Stewardship</a></li>
      <li class="nav"><a href="#USA">MADE in the USA</a></li>
    </ul>
    
    <div id="shipping" class="section">#shipping</div>
    <div id="returns" class="section">#returns</div>
    <div id="custom" class="section">#custom</div>
    <div id="replacements" class="section">#replacements</div>
    <div id="mostFAQs" class="section">#mostFAQs</div>
    <div id="RAD" class="section">#RAD</div>
    <div id="environmental" class="section">#environmental</div>
    <div id="USA" class="section">#USA</div>

    【讨论】:

      【解决方案2】:

      你把问题搞错了。你需要知道的是location.hash 来定位正确的div 来显示。

      这应该更接近:

      var hash = window.location.hash
      
      // Hide all .faq-container
      $("div.faq-container").hide()
      
      // If there is a hash
      if(hash){
        $("#"+hash).show()
      }
      

      【讨论】:

        猜你喜欢
        • 2016-03-29
        • 2021-03-21
        • 1970-01-01
        • 2019-01-07
        • 1970-01-01
        • 2017-07-28
        • 1970-01-01
        • 2015-01-20
        • 1970-01-01
        相关资源
        最近更新 更多