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

Alexander3928 26.11.2021 15:00

как вызвать функцию внутри другой функции?
 
Хочу понять как вызывать функцию из разных файлов в другую функцию. То-есть чтобы 2 функция с элементом p был внутри div с классом ttt

файл t.js

import { f } from "./f.js"

function t(root) {
    const ttt = document.createElement("div")
    ttt.classList.add("ttt")

    t.append(f(root))

    root.append(ttt)

}

t(document.querySelector("body"))


файл f.js

function f(root) {

    const fff = document.createElement("p")
    fff.classList.add("fff")

    root.append(fff)
}

export { f }


Что я не так тут сделал? + я знаю можно еще с помощью return возвращать функцию, если можно примерчик с return или append

voraa 26.11.2021 15:36

t.append(f(root))

t - это функция, а не элемент
Наверно вы хотели написать ttt.append(f(root))
Но f должна возвращать элемент, который она создает
Поэтому так надо

import { f } from "./f.js"
 
function t(root) {
    const ttt = document.createElement("div")
    ttt.classList.add("ttt")
 
    ttt.append(f())
 
    root.append(ttt)
 
}
 
t(document.querySelector("body"))


и

function f() {
    const fff = document.createElement("p")
    fff.classList.add("fff")
 
    return fff
}
 
export { f }

Alexander3928 26.11.2021 16:12

voraa,
А если там не один элемент а штук 6 или больше? Тогда нужно возвращать последний элемент(родительский)?

voraa 26.11.2021 17:31

Где там?
А возвращать надо всегда то, что потом будет где то использоваться, и чего нет во внешнем коде.

Alexander3928 27.11.2021 10:53

Вложений: 1
voraa,
Я имею виду если я не один элемент хочу из функции вызвать, а целую структуру блоков вот так:

<div class="box">
    <div class="item">
      <img src="" alt="" class="image">
      <img src="" alt="" class="image">
      <img src="" alt="" class="image">
    </div>
  </div>


P.S. я просто пытаюсь вернуть innerHTML, а получил не то что хотел.


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