Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как вызвать функцию внутри главной функции? (https://javascript.ru/forum/misc/82620-kak-vyzvat-funkciyu-vnutri-glavnojj-funkcii.html)

Alexander3928 01.06.2021 18:55

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

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 то вот такая ошибка:help: :help: :help: :help: :help:

P.S. надеюсь понятно обьяснил

рони 01.06.2021 19:16

Цитата:

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


https://learn.javascript.ru/event-delegation

Alexander3928 02.06.2021 19:04

Можно небольшой пример? Там слабо можно понять как объединить пару функций, которые будут разную работу выполнять. В родительскую функцию

рони 02.06.2021 19:09

Alexander3928,
вместо того чтобы ставить клик на каждую ссылку, поставьте клик на их родителя, и тогда неважно когда ссылка появится на странице.

Alexander3928 02.06.2021 19:18

Так это и не ссылка на переходы куда-то. Это две функции, одна создаёт еффект плавного скрола, а второй добавляет класс для span и меняет текст

рони 02.06.2021 19:20

плавный скролинг к якорю 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>

рони 02.06.2021 19:23

Цитата:

Сообщение от Alexander3928
Как вызвать функцию внутри главной функции?

вероятно я не понимаю вашей проблемы, помог чем смог, код выше.

Alexander3928 02.06.2021 19:25

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


Часовой пояс GMT +3, время: 18:48.