2010-09-28 34 views

Trả lời

179

Chức năng có thể được gọi như thể nó là trong cùng một Tệp JS miễn là tệp chứa định nghĩa của hàm đã được tải trước khi sử dụng hàm đầu tiên.

I.e.

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> 

Một cách khác sẽ không hoạt động. Như được chỉ ra chính xác bởi Stuart Wakefield. Cách khác cũng sẽ hoạt động.

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> 

gì sẽ không làm việc sẽ là:

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> 

Như mặc dù alertOne được định nghĩa khi gọi nó, nội nó sử dụng một chức năng mà vẫn chưa được xác định (alertNumber).

9

Miễn là cả hai đều được tham chiếu bởi trang web, có.

Bạn chỉ cần gọi các hàm như thể chúng nằm trong cùng một tệp JS.

3

có bạn có thể. bạn cần phải tham khảo cả JS file vào trang .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

Nếu tất cả các file được đưa vào, bạn có thể gọi bất động sản từ một tập tin để khác (như chức năng, thay đổi, đối tượng, vv)

Các js chức năng và các biến mà bạn viết trong một tập tin .js - nói a.js sẽ có sẵn cho các file js khác - nói b.js như miễn là cả hai a.jsb.js có trong tập tin sử dụng cơ chế sau đây bao gồm (và trong số cùng một đơn đặt hàng nếu hàm trong b.js gọi hàm trong a.js).

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

Câu trả lời ở trên có giả định không chính xác rằng thứ tự bao gồm các tệp quan trọng. Vì hàm alertNumber không được gọi cho đến khi hàm alertOne được gọi. Chừng nào cả hai tệp nào được đưa vào thời điểm alertOne được gọi là thứ tự của các file không quan trọng:

[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 

Hoặc nó có thể được đặt hàng như sau:

[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 

Nhưng nếu bạn đã làm điều này:

[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); 
}; 

Nó chỉ các vấn đề về biến và các chức năng có sẵn tại thời điểm thực hiện. Khi một hàm được định nghĩa, nó không thực hiện hoặc giải quyết bất kỳ biến nào được khai báo bên trong cho đến khi hàm đó sau đó được gọi.

Bao gồm các tập tin kịch bản khác nhau là không khác so với kịch bản là theo thứ tự mà trong cùng một tập tin, ngoại trừ kịch bản chậm:

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

sau đó bạn cần phải cẩn thận.

+1

Tương tự như vậy với quá ít –

+1

Điều này có thể âm thanh nitpicking nhưng bao gồm không chính xác giống như kịch bản nối. Hãy xem xét script1: 'function myfunction() {' và script2: 'alert();}' Nó sẽ không hoạt động. Nó làm phiền tôi vì tôi đã cố gắng mô đun hóa một tệp js quá dài. Xem http: // stackoverflow.com/questions/20311604/module-pattern-how-to-split-the-code-cho-một-mô-đun-thành-khác-js-files/20311661? noredirect = 1 # 20311661 – Boyang

+0

Chức năng này sẽ chia sẻ ngữ cảnh 'này' , nếu một trong những chức năng là trong một lớp học? – aks

0

Bạn có thể gọi hàm được tạo ra trong một file js từ tập tin bạn đang làm việc. Vì vậy, đối này trước hết bạn cần phải thêm file js bên ngoài vào tài liệu html như-

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

Chức năng định nghĩa ở bên ngoài javascript tập tin -

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

Để gọi chức năng này trong tập tin hiện tại của bạn, chỉ cần gọi hàm như -

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

Nếu bạn muốn vượt qua các tham số cho hàm, sau đó xác định chức năng như-

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

Và gọi hàm này trong tập tin hiện tại của bạn là -

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

Xin đừng giả sử jQuery ở mọi nơi. Ngoài ra, việc chỉ định mệnh đề '$ .fn' trong một mệnh đề tài liệu sẵn sàng là vô nghĩa – Bergi

+0

okay tôi sẽ giữ nó trong lần sau :), nhưng bạn có thể giải thích tại sao việc gán $ .fn là vô nghĩa? – sheetal

+0

Không chỉ định, gói. – Bergi

Các vấn đề liên quan