Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.06.2021, 18:55
Аспирант
Отправить личное сообщение для Alexander3928 Посмотреть профиль Найти все сообщения от Alexander3928
 
Регистрация: 19.05.2021
Сообщений: 75

Как вызвать функцию внутри главной функции?
функция для плавной прокрутки по якорям

function anchorsPage(root) {
    const anchors = document.querySelectorAll('a[href*="#"]');
 
    for (let anchors of anchors) {
       anchors.addEventListener('click', event => {
          event.preventDefault();
          const anchorsId = anchors.getAttribute('href')
          document.querySelector('' + anchorsId).scrollIntoView({
             behavior: "smooth",
             block: "start"
          });
       });
    }
 }


Это функция которая для элемента дает плавности прокрутки(одним словом якорь для плавной прокрутки страницы по id )

Ну вообщем суть не в этом, а как мне вызвать такие функции в главной функции где я динамически деал элементы?

Вот часть кода:
function main(root, dataList) {
    //PAGE 1
   const aboutWrraper = document.createElement('div');
   aboutWrraper.classList.add('about-wrraper');
   aboutWrraper.classList.add('grid');
   const introductionWrraper = document.createElement('div');
   introductionWrraper.classList.add('introduction-wrraper');
   introductionWrraper.classList.add('grid');
   const advantagesWrraper = document.createElement('div');
   advantagesWrraper.id = "center";
   advantagesWrraper.classList.add('advantages-wrraper');
   advantagesWrraper.classList.add('grid');

   activeCard();
   anchorsPage();

aboutWrraper.append(introductionWrraper, advantagesWrraper, biographyWrraper, buttonFormWrraper);
   root.append(aboutWrraper);
}


main(document.querySelector('main'));


И я хочу обьявить в ней 2 функции из других файлов
import { activeCard } from "./activeCard";
import { anchorsPage } from "./anchorsPage";




В скрине написано что не так.
P.S. на html это работат. А если страницы переводить динамически через js то вот такая ошибка

P.S. надеюсь понятно обьяснил
Изображения:
Тип файла: jpg 1.jpg (17.1 Кб, 2 просмотров)

Последний раз редактировалось Alexander3928, 01.06.2021 в 19:04.
Ответить с цитированием
  #2 (permalink)  
Старый 01.06.2021, 19:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Сообщение от Alexander3928
function anchorsPage(root)

https://learn.javascript.ru/event-delegation
Ответить с цитированием
  #3 (permalink)  
Старый 02.06.2021, 19:04
Аспирант
Отправить личное сообщение для Alexander3928 Посмотреть профиль Найти все сообщения от Alexander3928
 
Регистрация: 19.05.2021
Сообщений: 75

Можно небольшой пример? Там слабо можно понять как объединить пару функций, которые будут разную работу выполнять. В родительскую функцию
Ответить с цитированием
  #4 (permalink)  
Старый 02.06.2021, 19:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Alexander3928,
вместо того чтобы ставить клик на каждую ссылку, поставьте клик на их родителя, и тогда неважно когда ссылка появится на странице.
Ответить с цитированием
  #5 (permalink)  
Старый 02.06.2021, 19:18
Аспирант
Отправить личное сообщение для Alexander3928 Посмотреть профиль Найти все сообщения от Alexander3928
 
Регистрация: 19.05.2021
Сообщений: 75

Так это и не ссылка на переходы куда-то. Это две функции, одна создаёт еффект плавного скрола, а второй добавляет класс для span и меняет текст
Ответить с цитированием
  #6 (permalink)  
Старый 02.06.2021, 19:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

плавный скролинг к якорю js
Сообщение от Alexander3928
Можно небольшой пример?
<!DOCTYPE HTML>
<html>
<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <style type="text/css">
        div,
        body,
        html {
            height: 100%;
            margin: 0;
            padding: 0;
        }
        ul.tabs {
            position: relative;
            width: 100%;
            height: 50px;
            padding: 0;
            margin: 0;
            top: 0;
            list-style: none;
            overflow: hidden;
            background-color: #AF5931;
        }
        li {
            float: left;
            width: 25%;
        }
        a {
            line-height: .2em;
            text-decoration: none;
            text-align: center;
            display: block;
            color: #F0FFF0;
            padding: 0.5em 0;
            font-size: 2em;
            font-weight: bold;
            -webkit-transition: 0.8s ease-in-out;
            -moz-transition: 0.8s ease-in-out;
            -o-transition: 0.8s ease-in-out;
            transition: 0.8s ease-in-out;
        }
        a:hover {
            color: #00BFFF;
        }
        #dizzy {
            background-color: #1E90FF;
        }
        #ninja {
            background-color: #D675FF;
        }
        #missy {
            background-color: #FFFF85;
        }
        @media screen and (max-width: 800px) {
            ul.tabs {
                height: 15px;
                position: fixed;
                top: 0;
            }
            #dizzy {
                margin-top: 15px;
            }
            a {
                font-size: .7em;
                line-height: .1em;
            }
        }
    </style>
    <script>
        document.addEventListener('click', function(event) {
            let target = event.target;
            if (target = target.closest('a[href*="#"]')) {
                event.preventDefault();
                const anchorsId = target.hash;
                document.querySelector(anchorsId).scrollIntoView({
                    behavior: "smooth",
                    block: "start"
                });
            }
        });
    </script>
</head>
<body>
    <ul class="tabs">
        <li><a class="tab" href="#dizzy">Dizzy</a></li>
        <li><a class="tab" href="#ninja">Ninja</a></li>
        <li><a class="tab" href="#missy">Missy</a></li>
    </ul>
    <div id="dizzy">Dizzy
        <!-- panel content -->
    </div>
    <div id="ninja">Ninja
        <!-- panel content -->
    </div>
    <div id="missy">Missy
        <!-- panel content -->
    </div>
</body>
</html>
Ответить с цитированием
  #7 (permalink)  
Старый 02.06.2021, 19:23
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Сообщение от Alexander3928
Как вызвать функцию внутри главной функции?
вероятно я не понимаю вашей проблемы, помог чем смог, код выше.
Ответить с цитированием
  #8 (permalink)  
Старый 02.06.2021, 19:25
Аспирант
Отправить личное сообщение для Alexander3928 Посмотреть профиль Найти все сообщения от Alexander3928
 
Регистрация: 19.05.2021
Сообщений: 75

Да видемо я не понимаю как их вместе собрать
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обновить содержимое div (или какую функцию вызвать)? unity555 Events/DOM/Window 3 19.12.2017 16:38
Как передать функцию внутри функции mmotor Элементы интерфейса 3 31.07.2015 03:40
Как вызвать callback функцию oke11o jQuery 12 17.01.2012 13:36
как реализовать передачу функции в функцию?? czp Общие вопросы Javascript 10 29.11.2011 19:21
Как вызвать внутреннюю функцию? KamalovRadik jQuery 1 19.11.2011 02:03