Добавление 2 HTML-файлов на мой сайт с одной страницей прокрутки - PullRequest
0 голосов
/ 15 февраля 2019

Я добавляю 2 html-файла на свой одностраничный сайт прокрутки (index.html).У меня проблемы с navbar (бутстрап).При нажатии «формы бронирования» из «faq» страница не переходит в выбранный html-файл из-за функции прокрутки во включенном index.html.Как это исправить?

Я пытался добавить класс к ссылкам #home, #service, #corporate и #contact и добавить тот же класс в функцию Jquery за "navbar a".Это работает таким образом, но прокрутка на index.html исчезла.

index.html navbar:

<body data-spy="scroll" data-offset="80">
  <div id="nav" class="navbar navbar-default navbar-fixed-top menu-top">
    <div class="container">
      <div class="row">
        <div class="col-md-12">
          <div class="navbar-header">
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
              <span class="sr-only">Toggle navigation</span>
              <span class="icon-bar"></span>
              <span class="icon-bar"></span>
              <span class="icon-bar"></span>
            </button>
            <a href="index.html" class="navbar-brand">LOGO</a>
          </div>
          <div class="navbar-collapse collapse">
            <nav>
              <ul class="nav navbar-nav navbar-right">
                <li class="active"><a class="page-scroll" href="#home">Home</a></li>
                <li><a class="page-scroll" href="#service">Services</a></li>
                <li><a class="page-scroll" href="#corporate">Corporate</a></li>
                <li><a class="page-scroll" href="#contact">Contact</a></li>
                <li><a href="bookingform.html">Booking Form</a></li>
                <li><a href="faqs.html">FAQ</a></li>
              </ul>
            </nav>
          </div>
        </div>
        <!--- END COL -->
      </div>
      <!--- END COL -->
    </div>
    <!--- END CONTAINER -->
  </div>

faqs.html navbar:

<body data-spy="scroll" data-offset="80">
    <div id="nav" class="navbar navbar-default navbar-fixed-top menu-top">
        <div class="container">
            <div class="row">
                <div class="col-md-12">
                    <div class="navbar-header">
                        <button type="button" class="navbar-toggle" data-toggle="collapse"
                            data-target=".navbar-collapse">
                            <span class="sr-only">Toggle navigation</span>
                            <span class="icon-bar"></span>
                            <span class="icon-bar"></span>
                            <span class="icon-bar"></span>
                        </button>
                        <a href="index.html" class="navbar-brand">LOGO</a>
                    </div>
                    <div class="navbar-collapse collapse">
                        <nav>
                            <ul class="nav navbar-nav navbar-right">
                                <li><a href="index.html#home">Home</a></li>
                                <li><a href="index.html#service">Services</a></li>
                                <li><a href="index.html#corporate">Corporate</a></li>
                                <li><a href="index.html#contact">Contact</a></li>
                                <li><a href="bookingform.html">Booking Form</a></li>
                                <li class="active"><a href="faqs.html">FAQ</a></li>
                            </ul>
                        </nav>
                    </div>
                </div>
                <!--- END COL -->
            </div>
            <!--- END COL -->
        </div>
        <!--- END CONTAINER -->
    </div>

Функция Jquery в начале файла js:

$(document).ready(function () {

    $('select').niceSelect();

    // Add smooth scrolling to all links in navbar + footer link
    $(".navbar a, footer a[href='#myPage'], .overlay-detail a").on('click', function (event) {

        // Prevent default anchor click behavior
        event.preventDefault();

        // Store hash
        var hash = this.hash;

        // Using jQuery's animate() method to add smooth page scroll
        // The optional number (900) specifies the number of milliseconds it takes to scroll to the specified area
        $('html, body').animate({
            scrollTop: $(hash).offset().top
        }, 900, function () {

            // Add hash (#) to URL when done scrolling (default click behavior)
            window.location.hash = hash;
        });
    });

Вот ошибка, которую я получаю в консоли, когда на навигационной панели нажимается вкладка BookingForm или FAQ:

Uncaught TypeError: Cannot read property 'top' of undefined    app.js:17 
    at HTMLAnchorElement.<anonymous> (app.js:17)
    at HTMLAnchorElement.dispatch (jquery.min.js:3)
    at HTMLAnchorElement.r.handle (jquery.min.js:3)

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

Попробуйте это

ДОБАВИТЬ После того, как к вашему документу готовы страницы, на которых вы хотите, чтобы такой эффект

имел более плавный переход при возврате к index.html из двух дополнительных html-файлов


      var hash=location.hash;
      if (location.hash!='') {
      window.scrollTo(0,0);
      $('html, body').animate({
            scrollTop: $(hash).offset().top
          }, 900, function () {
            // Add hash (#) to URL when done scrolling (default click behavior)
            window.location.hash = hash;
          });
      }
```

0 голосов
/ 15 февраля 2019

Некоторые из ваших элементов дают hash = "";Можете ли вы попытаться изменить вас, как показано ниже, и попробуйте

{
        var currentpage = window.location.pathname.split("/").pop();
        var nextpage = this.href.split("/").pop();
        if ("".search("#" > -1)) {
          nextpage = nextpage.split("#")[0];
        }
        if (this.hash != "" && currentpage == nextpage) {
          //prevent default only if  required
          // pages are different AND has hash
          event.preventDefault();
          // Store hash
          var hash = this.hash;
          // Using jQuery's animate() method to add smooth page scroll
          // The optional number (900) specifies the number of milliseconds it takes to scroll to the specified area
          $('html, body').animate({
            scrollTop: $(hash).offset().top
          }, 900, function () {
            // Add hash (#) to URL when done scrolling (default click behavior)
            window.location.hash = hash;
          });
        }
        else
        {
          //
        }
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...