Funkcję można wywołać tak, jakby znajdowała się w tym samym pliku JS, o ile plik zawierający definicję funkcji został załadowany przed pierwszym użyciem funkcji.
To znaczy
Plik1.js
function alertNumber(number) {
alert(number);
}
File2.js
function alertOne() {
alertNumber("one");
}
HTML
<head>
....
<script src="File1.js" type="text/javascript"></script>
<script src="File2.js" type="text/javascript"></script>
....
</head>
<body>
....
<script type="text/javascript">
alertOne();
</script>
....
</body>
Drugi sposób nie zadziała.
Jak słusznie zauważył Stuart Wakefield . Drugi sposób również będzie działał.
HTML
<head>
....
<script src="File2.js" type="text/javascript"></script>
<script src="File1.js" type="text/javascript"></script>
....
</head>
<body>
....
<script type="text/javascript">
alertOne();
</script>
....
</body>
Co nie zadziała to:
HTML
<head>
....
<script src="File2.js" type="text/javascript"></script>
<script type="text/javascript">
alertOne();
</script>
<script src="File1.js" type="text/javascript"></script>
....
</head>
<body>
....
</body>
Chociaż alertOne
jest definiowany podczas jego wywoływania, wewnętrznie używa funkcji, która wciąż nie jest zdefiniowana ( alertNumber
).
W powyższej odpowiedzi błędnie założono, że kolejność dołączania plików ma znaczenie. Ponieważ funkcja alertNumber nie jest wywoływana, dopóki nie zostanie wywołana funkcja alertOne. Tak długo, jak oba pliki są uwzględnione przez alert czasu Jedna jest nazywana kolejność plików nie ma znaczenia:
[HTML]
[JS]
Lub można go zamówić w następujący sposób:
[HTML]
[JS]
Ale jeśli miałbyś to zrobić:
[HTML]
[JS]
Ma to znaczenie tylko wtedy, gdy zmienne i funkcje są dostępne w momencie wykonania. Kiedy funkcja jest zdefiniowana, nie wykonuje ani nie rozpoznaje żadnej z zadeklarowanych zmiennych, dopóki funkcja ta nie zostanie następnie wywołana.
Włączenie różnych plików skryptów nie różni się od skryptu w tej kolejności w tym samym pliku, z wyjątkiem skryptów odroczonych:
wtedy musisz być ostrożny.
źródło
function myfunction() {
i script2:alert();}
To nie zadziała. Martwi mnie to, ponieważ próbowałem zmodularyzować plik js, który jest zbyt długi. Zobacz stackoverflow.com/questions/20311604/…this
kontekst, jeśli jedna z funkcji należy do klasy?this
jest związany w punkcie, w którym funkcja jest wywoływana (chyba żebind
zostanie wywołana wcześniej). Dwie funkcje w dwóch osobnych plikach nie będą współużytkowaćthis
kontekstu automatycznie, w powyższym przykładzie nie mathis
kontekstu, tj.window
W trybie nieściągalnym lubundefined
ścisłym. Możesz sprawić, aby funkcja w drugim skrypciethis
miała tę samą wartość, przypisując funkcję jako element obiektu (tj. W konstruktorzethis.method = myOtherFunc
) lub używając powiązania. Proszę zamieścić pytanie SO bardziej szczegółowo, jeśli potrzebujesz bardziej szczegółowej odpowiedzi. Pozdrawiam, StuartTak długo, jak obie strony są przywoływane przez stronę internetową, tak.
Po prostu wywołujesz funkcje tak, jakby były w tym samym pliku JS.
źródło
Jeśli wszystkie pliki są uwzględnione, możesz wywoływać właściwości z jednego pliku do drugiego (np. Funkcja, zmienna, obiekt itp.)
Funkcje i zmienne js, które zapisujesz w jednym pliku .js - powiedzmy, że a.js będą dostępne dla innych plików js - powiedzmy b.js, o ile zarówno a.js, jak i b.js są zawarte w tym pliku, stosując następujące opcje : mechanizm (i w tej samej kolejności, jeśli funkcja w b.js wywołuje tę w a.js).
źródło
ES6: Zamiast
<script>
dołączać wiele plików js przy użyciu .html, możesz dołączyć tylko jeden plik główny, np.script.js
Używając atrybututype="module"
( wsparcie ), a wewnątrzscript.js
możesz dołączyć inne pliki:I w
script.js
pliku dołącz inny taki plik:W „module.js” musisz wyeksportować funkcję / klasę , którą zaimportujesz
Przykład roboczy tutaj .
źródło
tak, możesz . musisz odnieść się zarówno
JS file
do.aspx
stronyźródło
Możesz wywołać funkcję utworzoną w innym pliku js z pliku, w którym pracujesz. W tym celu najpierw musisz dodać zewnętrzny plik js do dokumentu HTML jako-
Funkcja zdefiniowana w zewnętrznym pliku javascript -
Aby wywołać tę funkcję w bieżącym pliku, wystarczy wywołać funkcję jako -
Jeśli chcesz przekazać parametry do funkcji, zdefiniuj funkcję jako
I wywołaj tę funkcję w bieżącym pliku jako -
źródło
$.fn
zadania w klauzulę gotowości do dokumentu nie ma sensuOto bardziej opisowy przykład z dołączonym fragmentem kodu CodePen:
1.js
2.js
index.html
wynik
Wypróbuj ten fragment kodu CodePen: link .
źródło
Cóż, natknąłem się na inne słodkie rozwiązanie.
window['functioName'](params);
źródło
Dla tych, którzy chcą to zrobić w Node.js (uruchamianie skryptów po stronie serwera), inną opcją jest użycie
require
imodule.exports
. Oto krótki przykład tworzenia modułu i eksportowania go do użycia w innym miejscu:plik1.js
plik2.js
źródło