2010-09-28 8 views

Odpowiedz

179

Funkcję można nazwać tak, jakby to było w tym samym Plik JS, dopóki plik zawierający definicję funkcji jest ładowany przed pierwszym użyciem funkcji.

tj.

File1.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> 

Inny sposób nie zadziała. Jak słusznie zauważył Stuart Wakefield. W przeciwnym razie 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 będzie działać będzie:

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> 

Jako chociaż alertOne jest zdefiniowany podczas wywoływania go wewnętrznie używa funkcji, które nie są jeszcze zdefiniowane (alertNumber).

9

Dopóki oba są przywoływane przez stronę internetową, tak.

Wystarczy wywołać funkcje tak, jakby znajdowały się w tym samym pliku JS.

3

tak, możesz. trzeba odnieść zarówno JS file do strony .aspx

<script language="javascript" type="text/javascript" src="JScript1.js"> 
</script> 

    <script language="javascript" type="text/javascript" src="JScript2.js"> 
    </script> 

JScript1.js

function ani1() { 
    alert("1"); 
    ani2(); 
} 
JScript2.js 
function ani2() { 
    alert("2"); 
} 
5

Jeśli wszystkie pliki są włączone, można właściwości z jednego pliku do drugiego (jak nazywają funkcji, zmienna, obiekt itp)

JS funkcje i zmienne, że piszesz w jednym pliku .js - powiedzieć a.js będą dostępne dla innych plików js - mówią b.js jak długo jak obie a.js i b.js są zawarte w pliku stosując następujący obejmują mechanizm (aw to samo zamówienie, jeśli funkcja w b.js wywoła tę w pliku a.js).

<script language="javascript" src="a.js"> and 
<script language="javascript" src="b.js"> 
62

Powyższa odpowiedź ma błędne założenie, że kolejność dołączania plików ma znaczenie. Ponieważ funkcja alertNumber nie jest wywoływana, dopóki nie zostanie wywołana funkcja alertOne. Dopóki oba pliki są włączone przez czas alertOne nazywa kolejność plików nie ma znaczenia:

[HTML]

<script type="text/javascript" src="file1.js"></script> 
<script type="text/javascript" src="file2.js"></script> 
<script type="text/javascript"> 
    alertOne(); 
</script> 

[JS]

// File1.js 
function alertNumber(n) { 
    alert(n); 
}; 
// File2.js 
function alertOne() { 
    alertNumber("one"); 
}; 
// Inline 
alertOne(); // No errors 

lub można go zamawiać jak następuje:

[HTML]

<script type="text/javascript" src="file2.js"></script> 
<script type="text/javascript" src="file1.js"></script> 
<script type="text/javascript"> 
    alertOne(); 
</script> 

[JS]

// File2.js 
function alertOne() { 
    alertNumber("one"); 
}; 
// File1.js 
function alertNumber(n) { 
    alert(n); 
}; 
// Inline 
alertOne(); // No errors 

Ale jeśli było to zrobić:

[HTML]

<script type="text/javascript" src="file2.js"></script> 
<script type="text/javascript"> 
    alertOne(); 
</script> 
<script type="text/javascript" src="file1.js"></script> 

[JS]

// File2.js 
function alertOne() { 
    alertNumber("one"); 
}; 
// Inline 
alertOne(); // Error: alertNumber is not defined 
// File1.js 
function alertNumber(n) { 
    alert(n); 
}; 

tylko to ma znaczenie o zmiennych i funkcje dostępne w momencie wykonania. Gdy funkcja jest zdefiniowana, nie wykonuje ani nie rozstrzyga żadnej z zadeklarowanych zmiennych, dopóki ta funkcja nie zostanie później wywołana.

Uwzględnienie różnych skryptach nie różni się od scenariusza będącego w takiej kolejności w obrębie tego samego pliku, z wyjątkiem skryptów odroczonych:

<script type="text/javascript" src="myscript.js" defer="defer"></script> 

to trzeba być ostrożnym.

+1

Podobnie zbyt mało –

+1

To może brzmieć dziurawienie, ale włączenie nie jest dokładnie tym samym, co łączenie skryptów. Rozważmy skrypt1: 'function myfunction() {' and script2: 'alert();}' To nie zadziała. Mnie to przeszkadza, ponieważ próbowałem modularyzować plik js, który jest zbyt długi. Zobacz http: // stackoverflow.com/questions/20311604/module-pattern-how-to-split-the-code-for-one-module-into-different-js-files/20311661? noredirect = 1 # 20311661 – Boyang

+0

Czy ta funkcja współdzieli ten "kontekst" , jeśli jedna z funkcji jest w klasie? – aks

0

Można wywołać funkcję utworzoną w innym pliku js z pliku, na którym pracujemy. Więc za to po pierwsze trzeba dodać plik js zewnętrznych do dokumentu html as-

<html> 
<head> 
    <script type="text/javascript" src='path/to/external/js'></script> 
</head> 
<body> 
........ 

funkcję zdefiniowaną w zewnętrznym pliku JavaScript -

$.fn.yourFunctionName = function(){ 
    alert('function called succesfully for - ' + $(this).html()); 
} 

Aby wywołać tę funkcję w bieżącym pliku, wystarczy wywołać funkcję jak -

...... 
<script type="text/javascript"> 
    $(function(){ 
     $('#element').yourFunctionName(); 
    }); 
</script> 

Jeśli chcesz przekazać parametry do funkcji, a następnie zdefiniować funkcję as-

$.fn.functionWithParameters = function(parameter1, parameter2){ 
     alert('Parameters passed are - ' + parameter1 + ' , ' + parameter2); 
} 

I wywołać tę funkcję w bieżącym pliku, -

$('#element').functionWithParameters('some parameter', 'another parameter'); 
+0

Proszę nie zakładać jQuery wszędzie. Również zawijanie przydziału '$ .fn' w klauzuli" gotowe do użycia "jest bezcelowe. – Bergi

+0

okej, będę się martwić następnym razem :), ale czy możesz wyjaśnić, dlaczego przydział $ .fn jest bezcelowy? – sheetal

+0

Nie zlecenie, opakowanie. – Bergi

Powiązane problemy