Chciałem wywołać funkcję zdefiniowaną w pliku first.js w pliku second.js. oba pliki są zdefiniowane w pliku HTML, takim jak:
<script type="text/javascript" src="first.js"></script>
<script type="text/javascript" src="second.js"></script>
Chcę zadzwonić fn1()
zdefiniowany first.js
w second.js
. Z moich wyszukiwań odpowiedzi były takie, że jeśli first.js
jest zdefiniowane jako pierwsze, jest to możliwe, ale z moich testów nie znalazłem żadnego sposobu, aby to zrobić.
Oto mój kod:
second.js
document.getElementById("btn").onclick = function() {
fn1();
}
first.js
function fn1() {
alert("external fn clicked");
}
javascript
html
m0j1
źródło
źródło
Odpowiedzi:
Funkcji nie można wywołać, chyba że została zdefiniowana w tym samym pliku lub została załadowana przed próbą wywołania.
Nie można wywołać funkcji, chyba że znajduje się w tym samym lub większym zakresie niż ta, która próbuje ją wywołać.
Deklarujesz funkcję
fn1
w first.js, a następnie w drugiej możesz po prostu miećfn1();
1.js:
2.js:
index.html:
źródło
$(document).ready(function() {...})
bloku i nie działała. Poruszyłem go i zadziałało jak urok.Możesz uczynić funkcję zmienną globalną w
first.js
i spojrzeć na zamknięcie i nie umieszczać go nadocument.ready
zewnątrzmożesz też użyć Ajax
w ten sam sposób możesz użyć jquery getScript
źródło
1st JS:
2nd JS:
Mam nadzieję, że to pomoże ... Miłego kodowania.
źródło
jQuery.getScript()
Możesz rozważyć użycie składni importu eksportu es6. W pliku 1;
A potem w pliku 2;
Pamiętaj, że działa to tylko wtedy, gdy używasz
<script src="./file2.js" type="module">
Jeśli zrobisz to w ten sposób, nie będziesz potrzebować dwóch tagów skryptu. Po prostu potrzebujesz głównego skryptu i możesz tam zaimportować wszystkie inne rzeczy.
źródło
cross-origin script load denied by cross-origin resource sharing policy
Powinno działać tak:
1.js
2.js
index.html
wynik
Wypróbuj ten fragment kodu CodePen: link .
źródło
Należy pamiętać, że działa to tylko wtedy, gdy
Tagi są w ciele, a NIE w głowie.
Więc
=> nieznana funkcja fn1 ()
Niepowodzenie i
Pracuje.
źródło
Użyj pamięci podręcznej, jeśli serwer pozwala na zwiększenie szybkości.
A potem użyj tego w ten sposób:
Opcjonalnie utwórz jego prototyp, aby był bardziej elastyczny. Aby nie musieć definiować pliku za każdym razem, gdy wywołujesz funkcję lub chcesz pobrać kod z wielu plików.
źródło
first.js
Second.js
index.html
źródło
źródło
zadeklaruj funkcję w zakresie globalnym z oknem
first.js
second.js
zawierać w ten sposób
źródło
To faktycznie nadchodzi bardzo późno, ale pomyślałem, że powinienem się podzielić,
w index.html
w 1.js
w 2.js
źródło
użyj "var" podczas tworzenia funkcji, wtedy możesz uzyskać do niej dostęp z innego pliku. upewnij się, że oba pliki są dobrze połączone z projektem i mają do siebie dostęp.
plik_1.js
dostęp do tej funkcji / zmiennej w postaci pliku_2.js
mam nadzieję, że to komuś pomoże, miłego kodowania !!!
źródło
odniesienie z https://hype.codes/how-include-js-file-another-js-file
źródło
Miałem ten sam problem. Zdefiniowałem funkcje wewnątrz funkcji gotowej do dokumentu jquery .
I tę funkcję xyz () wywołałem w innym pliku. To nie działa :) Musisz zdefiniować funkcję powyżej gotowego dokumentu .
źródło