Javascript, передавая мою строку в качестве аргумента превращает его в 0 - PullRequest
0 голосов
/ 17 ноября 2018

Я использую scrollmagic.io и делаю якорное навигационное меню.Я следую этому учебнику .Свиток работает!За исключением того, что он прокручивал назад к началу, а не к странице, на которой он должен быть.

Вот мой код:

// init controller
var controller = new ScrollMagic.Controller();

// animate scroll instead of a jump
controller.scrollTo(function(target) {
  console.log('scroooooll');
  console.log('target = '+target); // THIS IS PRINTING 0
  console.log(typeof(target));
  /* Commenting out what it should do for simplicity. */
});

// scroll action when you click the nav links
$(document).on('click', 'a[href^=#]', function(e) {
  var id = $(this).attr('href'); // get the href of clicked link
  if ($(id).length > 0) { // not empty links
    e.preventDefault(); // prevent normal link action

    // this is the function call
    console.log('click');
    console.log('id = '+id); // IT PRINTS CORRECT HERE
    console.log(typeof(id));
    controller.scrollTo(id); // scroll on click

    // update the URL
    if (window.history && window.history.pushState) {
      history.pushState("", document.title, id);
    }
  }
});

А вот вывод моего консольного журнала:

click
id = #{the-href-value}
string
scroooooll
target = 0
number

Мой Javascript довольно ржавый, но мне это не кажется правильным.Почему он изменяет мою переменную со строки на 0, когда я передаю ее в качестве параметра?

1 Ответ

0 голосов
/ 17 ноября 2018

Из документов:

"Эта функция будет использоваться для будущих изменений положения прокрутки. Это дает вам возможность изменить поведение прокрутки и добавление нового поведения, такого как анимация. Функция получает новый положение прокрутки как параметр и ссылка на контейнер Элемент, использующий это. Также может при желании получить дополнительный дополнительный параметр (см. ниже) "

Итак, первый параметр передается контроллером. После этого вы получите свой параметр.

http://scrollmagic.io/docs/ScrollMagic.Controller.html#scrollTo

Попробуйте напечатать console.log(args);

controller.scrollTo(function(scrollPos, targetHrefISent) {
  console.log('scroooooll');
  console.log('target = '+targetHrefISent); // THIS IS PRINTING 0
  console.log(typeof(targetHrefISent));
  /* Commenting out what it should do for simplicity. */
});
...